java SpringBoot如何向其他URL发送响应
我有以下代码:
@RequestMapping(
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE},
path = "api/api1",
method = RequestMethod.POST,
produces = MediaType.ALL_VALUE
)
public ResponseEntity<?> api1CallBack(@RequestBody String requestBody, HttpServletRequest request) throws IOException, GeneralSecurityException, URISyntaxException {
String response="{SOME_JSON}";
URI callbackURL = new URI("http://otherAPIEnv/api2");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setLocation(callbackURL);
return new ResponseEntity<String>(response,httpHeaders, HttpStatus.OK);
}
我尝试了上面的代码,但是当我通过curl点击api1时,我在同一台机器上得到了响应,但是我希望响应被重定向到otherAPIEnv机器上的api2
有人能建议如何实现这种请求和响应吗
# 1 楼答案
您需要使用
redirect
并修改方法的返回类型# 2 楼答案
看起来像是
redirect
的工作至于卷曲。你有这个方法的
POST
映射,所以一定要用curl -X POST...
或者把它改成GET
# 3 楼答案
因此,在这种情况下,方法应该有所不同
首先,在主rest API中,必须发送响应代码来释放客户端
然后,在API方法中,必须异步调用另一个方法,该方法调用api2并执行所需的操作
下面是一个简单的例子
APICaller应该如下所示
但您可以选择最舒适的方式来执行异步操作
# 4 楼答案
这是做这类事情的更模块化、更通用的方式: