在Spring Boot应用程序中使用带有上下文路径

时间:2018-06-15 12:20:56

标签: rest spring-cloud netflix-zuul spring-cloud-netflix spring-hateoas

我在zuul网关后面有一个spring boot 2.0.2 Web应用程序。我的应用程序使用spring hateoas链接。我的应用程序也有上下文路径设置让我们说xxx。

当通过zuul网关进行查询时,hateoas链接变为无效。原因如下: 让我们说一个电话https://localhost/serviceName/service-context-path/path。我要求我的heteoas链接成为ie https://localhost/serviceName/service-context-path/path/ 但是,这些链接变为:https://localhost/service-context-path/path/

我已经进行了搜索并发现堆栈溢出此链接(HATEOAS paths are invalid when using an API Gateway in a Spring Boot app) 实际上,默认情况下add-proxy-headers会发送X-FORWARDED-PREFIX(allong host等),我猜这是社区有意解决这个问题。但是......当我调试我的应用程序时,我到达了这个方法org.springframework.web.servlet.support.ServletUriComponentsBuilder#fromContextPath,java doc部分如下: 从4.3.15开始,此方法将contextPath替换为值“X-Forwarded-Prefix”而不是前置,从而与{@code ForwardedHeaderFiller}对齐。

这意味着以下内容,当存在X-FORWARDED-PREFIX时,应用程序上下文将替换为zuul的前缀,即serviceName。我想uul开发人员不能知道应用程序上下文,另一方面,org.springframework.web.servlet.support.ServletUriComponentsBuilder#fromContextPath与相应的规范兼容。

问题:我该如何进行?我确实希望我的hateoas链接在我使用zuul时是正确的

1 个答案:

答案 0 :(得分:0)

我的问题是这里没有解决方案。 正确的方法是避免使用zuul并转到Spring云网关。