В настоящее время я делаю систему API, и у меня возникла проблема с переадресацией запросов.
В моей системе API все запросы от пользователей сначала поступают на прокси-контроллеры, а затемзапросы перенаправляются в реальный версионный API.
// proxy controller
@Controller
@RequestMapping("/proxy")
public class ProxyController {
private static final String VERSION = "v1";
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String getUsers() {
return String.format("forward:/%s/users", VERSION);
}
}
// Real API controller
@RestController("v1UsersController")
@RequestMapping("/v1/users")
public class UsersController {
@RequestMapping(value = "/users", method = RequestMethod.GET)
public ApiResultsResponse<Users> findUsers(@RequestParam userId, ...) {
// ...
// ...
// ...
// return users found
}
Я нашел прокси-контроллер, потому что я мог легко изменить реальный API, когда в некоторых случаях происходит, например, обновление версии API.
Однако, поскольку я использовал переадресацию со String (в данном случае return String.format("forward:/%s/users", VERSION)
), я не уверен, существует ли перенаправленный реальный API или нет в настоящее время.
Итак, я 'Я хотел бы убедиться в этом, вызвав метод контроллера реального API напрямую.Если это так, когда вызываемый метод не существует, я могу заметить это с ошибками компиляции.Проблема в том, что мне нужно синхронизировать состояние параметров реального обработчика API с прокси. (Это довольно грязно.)
Можно ли напрямую вызывать метод переадресованного контроллера с использованием того же объекта HttpServletRequest?