0
我正在尋找一種將POST請求從一個SpringBoot應用程序直接轉發到另一個SpringBoot應用程序的方法。轉發GET請求非常簡單,下面的代碼顯示了當我懶洋洋地嘗試重新使用相同的重定向路徑時,如何得到405錯誤。將POST請求從一個REST API轉發/重定向到另一個REST API
我看了StackOverflow上的現有示例(最值得注意的是here),但我甚至無法獲得編譯的解決方案。任何人都可以提出修改下面的代碼,讓我只是通過重定向整個POST請求?
@RestController
public class Routing {
@Autowired
private RoutingDelegate routingDelegate;
@RequestMapping(value="/**", method=RequestMethod.GET, produces=MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> catchAll(HttpServletRequest request, HttpServletResponse response){
return routingDelegate.redirect(request, response);
}
@RequestMapping(value="/**", method=RequestMethod.POST, produces=MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> catchAllPost(HttpServletRequest request, HttpServletResponse response){
/**
* This returns a 405 error, which is understandable since I'm redirecting a POST request to a GET endpoint
*/
return routingDelegate.redirect(request, response);
}
}
@Service
public class RoutingDelegate {
private final String baseServerUrl = "http://localhost:8080";
public ResponseEntity<String> redirect(HttpServletRequest request, HttpServletResponse response){
try {
String queryString = request.getQueryString();
String redirectUrl = baseServerUrl + request.getRequestURI() +
(queryString != null ? "?" + queryString : "");
response.sendRedirect(redirectUrl);
}
catch (IOException e) {
return new ResponseEntity<String>("REDIRECT ERROR", HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<String>("", HttpStatus.OK);
}
}