java - 在 Tomcat 上部署时,Spring Boot HATEOAS 链接错误

标签 java spring tomcat spring-boot

我已经使用 Spring Boot 为 AngularJS 应用程序开发了一个 REST API。我正在运行 Java 8 并在运行 Oracle 的 JDK8 的 Ubuntu 上部署到 Tomcat 8。当我从 Eclipse 中运行时,或者如果我将应用程序作为 JAR 运行时,一切正常。如果我点击 localhost:9000/api 我会得到如下输出:

{
    "expenses" : {
        "href" : "http://localhost:9000/api/expenses"
    },
    "expenseTypess" : {
        "href" : "http://localhost:9000/api/expensetypes"
    },
    ....
}

如果我将应用程序打包为 WAR 并将其部署到位于/myapplication 的 Tomcat 上,我会丢失应用程序根目录后的尾部斜杠。调用 192.168.1.170:8080/myapplication/api 返回:

{
    "expenses" : {
        "href" : "http://192.168.1.170:8080/myapplicationapi/expenses"
    },
    "expenseTypess" : {
        "href" : "http://192.168.1.170:8080/myapplicationapi/expensetypes"
    },
    ....
}    

...这显然会导致所有内容爆炸,因为没有一个 API 链接是正确的。如果我手动调用正确的 URI,则返回的资源也有损坏的链接。

有没有人看到并克服它?

最佳答案

嗯,答案真的很简单。如此简单,我什至忽略了去想它。我在 application.properties 中为 API 定义了一个基本 URI:

spring.data.rest.base-uri=api

更改为:

spring.data.rest.base-uri=/api

解决了这个问题:/

关于java - 在 Tomcat 上部署时,Spring Boot HATEOAS 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861200/

相关文章:

java - Spring Cache - 生成自定义缓存结果

java.util.date 的值自己改变了

java - Cookie 域包含点?

java - 如何将 Class<后代> 传递到 Hashmap 中?

Java Spring 与 swagger2 未启动服务器

java - 如何在 Maven 构建中包含一个随机文件以用于要在 AWS EBS 上部署的 WAR 文件?

apache - 我如何获得 apache httpd session ID

java - 如何在 Ext JS4 中按行在桌面上排列图标

java - 如何让数组中的所有卡片都显示出来?

java - 验证异常 : Unable to find a default provider