Spring cloud: перенаправление с сервера ресурсов на сервер пользовательского интерфейса
Я построил простую микросервисную архитектуру с четырьмя компонентами: a. Сервер шлюза с использованием Zuul-Eureka b. Ui Server c. Сервер ресурсов d. сервер конфигурации
Ниже приведены мои конфигурации
а. Сервер шлюза
eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
zuul.routes.categoryService.path=/categoryService/**
zuul.routes.categoryService.sensitive-headers=Set-Cookie,Authorization
zuul.routes.ui-server.path=/ui-server/**
zuul.routes.ui-server.sensitive-headers=Set-Cookie,Authorization
hystrix.command.ui-
server.execution.isolation.thread.timeoutInMilliseconds=600000
UI-сервер
spring.application.name=ui-server
server.port=8084
eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/
spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp
Сервер ресурсов [categoryService]
spring.application.name=categoryService
server.port=8083
eureka.client.region = default
eureka.client.registryFetchIntervalSeconds = 5
eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/
Я настроил все четыре серверных сервера, и мой config, ui-server и categoryService успешно зарегистрированы в Zuul (шлюз).
Когда я бегу localhost:8080/ui-server/login
Я могу видеть мою страницу входа
@Controller
public class Sample {
@RequestMapping(value="/login", method=RequestMethod.GET)
public String hello() {
return "login_register";
}
@RequestMapping(value="/login", method=RequestMethod.POST)
public String hello1() {
return "login_register";
}
}
<form class="form" method="POST"
action="http://localhost:8080/categoryService/category/getUi">
<div class="form-group ${error != null ? 'has-error' : ''}">
<span>${message}</span>
<input class="form-control" id="username" type="text"
name="username" placeholder="Username"/>
</div>
<div class="form-group">
<input class="form-control" id="password" type="password"
name="password" placeholder="Password"/>
</div>
<span style="color: red; size: 20px;">${error}</span>
<div class="form-group">
<button class="btn btn-round btn-b">Login</button>
</div>
<div class="form-group"><a href="">Forgot Password?</a></div>
</form>
Когда я бегу localhost:8080/categoryService/getAllCategories
Я также вижу ответ.
@RequestMapping(value="/getAllCategoryId", method=RequestMethod.POST)
@ResponseBody
public Object getAllCategoryId(@RequestParam(value="userId") Long
userId,HttpServletRequest request) {
//Long userId =
((UserInfo)request.getAttribute("loggedInUser")).getId();
//List<Long> categoryIdList = categoryService.getAllCategoryId();
return sampleName;
}
Так что все конфигурации в порядке.
Мой вопрос: предположим, что я выполняю действие формы "post" из кода входа в мой ui-сервер на localhost:8080/categoryService/getUi, тогда как мне получить ответ на мой контроллер ui-сервера?
Как то так на сервере ресурсов (категория Service)
@RequestMapping(value="/getUi1", method=RequestMethod.POST)
public Object getUi() {
//Long userId =
((UserInfo)request.getAttribute("loggedInUser")).getId();
//List<Long> categoryIdList = categoryService.getAllCategoryId();
return "forward:/ui-server/login/";
//return "ui-server/login";
//return "/ui-server/login";
//return "http://localhost:8080/ui-server/login";
}
Ничто из вышеприведенного возврата не работает. Как перенаправить с моего сервера ресурсов на сервер пользовательского интерфейса через мой шлюз?