如何在Spring Boot中将POST请求从一个Web应用程序正确转发到另一个Web应用程序?

时间:2018-04-19 04:28:24

标签: java spring http spring-boot model-view-controller

让我们考虑一下我有两个Web应用程序A和B的情况

初始数据来到A,我有下一个控制器:

@RestController
public class restController {
@RequestMapping(path = "/testA", method = RequestMethod.POST)
public final void test(*inputdata*) { "redirect POST to B app" }
}

此数据必须发送到应用B:

@RestController
public class restController {
@RequestMapping(path = "/testB", method = RequestMethod.POST)
public final void test(*inputdata*) { 'some logic' }
}

必须将逻辑结果发送回A app。

通信必须以RESTful格式进行。

据我发现"谷歌搜索" Spring没有办法做到这一点,我必须创建自定义" POST"方法,是真的吗?因为此链接http://www.baeldung.com/spring-redirect-and-forward包含有关"重定向HTTP POST请求的信息"但我不能按照他们的方式使用它。

谢谢!

2 个答案:

答案 0 :(得分:2)

redirect转到用户浏览器,然后转到重定向的网址。它将始终作为GET请求。在您的情况下,您将不得不使用A中的httpclient(RestTemplate)从A调用应用程序B.我不确定这是否满足您的要求。甲

另一种方法是发送一个页面作为A请求的响应,并让页面提交一个ajax请求,这是一个POST,但我想,因为你想要REST上的所有内容,这可能不是你想要的。

答案 1 :(得分:1)

您可以使用RestTemplateFeign Client

RestTemplate帖子示例:

Foo foo = restTemplate.postForObject("/testB", request, Foo.class);

但是,当您使用微服务时,您应该使用Feign客户端进行微服务通信。

修改

Feign比RestTemplate提供了许多额外的好处。

示例:Feign客户端提供开箱即用的负载平衡。

您可以阅读更多here