Spring MVC 使用 Spring Cloud Eureka 重定向

Spring MVC Redirects with Spring Cloud Eureka

当使用 Spring MVC 和 Spring Cloud Eureka 时,我怎样才能让 Spring MVC 像 RestTemplate 那样解析我的重定向 URL?

例如,如果我有两个服务,user-service 和 movie-service 都注册了 Spring Cloud Eureka,我怎样才能让 user-service 中的控制器重定向到 movie-服务端点,无需硬编码 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 云通常与 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
    }
}