Spring MVC Перенаправляет с помощью Spring Cloud Eureka - PullRequest
0 голосов
/ 17 апреля 2020

При использовании Spring MVC и Spring Cloud Eureka, как я могу получить Spring MVC для разрешения URL-адресов перенаправления, аналогично тому, как RestTemplate способен?

Например, если у меня есть две службы, user-service и mov ie -service, которые оба зарегистрированы в Spring Cloud Eureka, как я могу получить контроллер в user-service для перенаправления на конечную точку службы mov ie -service без жесткого кодирования 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, но мне кажется, что было бы целесообразно интегрировать с ним и ваши веб-приложения.

1 Ответ

2 голосов
/ 17 апреля 2020
@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
    }
}
...