HTTPリクエストタイプごとにRESTサービスを公開し、パス内の情報に基づいてルーティングしないのはなぜですか?たとえば(テストされていない、おそらくそのままでは機能しませんが、基本的な考え方はわかります):
@Autowired
RestTemplate restTemplate;
@Value("${rest.proxy.target.base.url}")
String targetBaseUrl;
@RequestMapping(value = "/restProxy/{restUrlPath}", method = RequestMethod.GET)
public @ResponseBody String restProxyGet(@PathVariable("restUrlPath") String restUrlPath) {
return restTemplate.getForObject(targetBaseUrl+ "/" + restUrlPath, String.class);
}
@RequestMapping(value = "/restProxy/{restUrlPath}", method = RequestMethod.POST)
public @ResponseBody String restProxyPost(@PathVariable("restUrlPath") String restUrlPath, @RequestBody String body) {
return restTemplate.postForObject(targetBaseUrl + "/" + restUrlPath, body, String.class);
}
//Can also add additional methods for PUT, DELETE, etc. if desired
さまざまなホストと通信する必要がある場合は、さまざまなターゲットベースURLを格納するマップへのキーとして機能する別のパス変数を追加するだけです。コントローラから、またはSpringSecurityのカスタム認証を介して必要な認証を追加できます。
あなたの質問は詳細についていくらか軽いので、あなたの特定のシナリオは物事を複雑にするかもしれませんが、基本的なアプローチはうまくいくはずです。