spring - Spring MVC 重定向与 Spring Cloud Eureka
问题描述
使用 Spring MVC 和 Spring Cloud Eureka 时,如何让 Spring MVC 像 RestTemplate 一样解析我的重定向 URL?
例如,如果我有两个服务,用户服务和电影服务,它们都注册到 Spring Cloud Eureka,我怎样才能让用户服务中的控制器重定向到电影服务端点,而不用硬编码 url?
@Controller
public class UserServiceController {
@PostMapping("/something")
public String performSomeAction() {
// I'd like movie service to be resolved to an instance that is registered with Eureka
return "redirect:http://movie-service/some-url
}
}
我正在尝试做的事情可能吗?我知道 Spring Cloud 通常与 API 一起使用,但对我来说,能够将您的 Web 应用程序与之集成似乎也很有意义。
解决方案
@Controller
public class UserServiceController {
@Autowired
LoadBalancerClient loadBalancerClient;
@PostMapping("/something")
public String performSomeAction() {
ServiceInstance serviceInstance = loadBalancerClient.choose("movie-service");
if (serviceInstance != null) {
return "redirect:http://"+ serviceInstance.getHost() + ":" + serviceInstance.getPort() +"/some-url
}
// throw an error or something else
}
}
推荐阅读
- python - 使用 Python 进行 POST/POLL/GET
- laravel - Laravel: Function name must be a string
- java - Unable to parse JSON, Showing error message "JSONObject["other"] not found"
- javascript - How can I compute and display on browser elapsed time between 2 HTML requests generated on J2EE/JSF server?
- c# - Is there any OnTimeSetUp attribute which accepts parameters in NUnit?
- javascript - Compact data structures for JSON time-series data
- angular - How to check dxTextBox from child component is empty?
- hyperledger-fabric - Composer 网络安装:错误没有来自任何对等方的有效响应
- algorithm - 将 3D 平面转换为 2D 坐标系
- c# - How to read presentationML and place the output on Active slide of powerpoint using c# VSTO