【发布时间】:2019-10-26 10:12:44
【问题描述】:
我正在使用 java8 和 Spring Cloud 在微服务架构中开发一个系统。我实现了一个 post rest 控制器,它接收 json 中的对象,然后将其保存在数据库中。问题是;如何获取包含刚刚保存的对象的 API 网关的 URI,以便可以在创建的响应主体上返回它?
比如,当我使用
URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(savedProfile.getId()).toUri();
时,我得到的是http://Boss.mshome.net:8081/profile/1 而不是localhost:8765/nukr-profile-service/profile/1,后者是API 网关路径的端点。
检索此 URI 的最佳做法是什么?
【问题讨论】:
-
为什么需要返回api网关url?不是明确知道的吗?
-
是的。问题是,我想从 eureka 命名服务器加载它,以防它更改端口或服务器。所以我决定使用我在这里发布的解决方案作为答案。这样即使Gateway的url改变了也不会有问题,因为我是从Eureka命名服务器加载的。
标签: uri spring-cloud netflix-eureka api-gateway