RestTemplate不携带请求属性

时间:2019-04-29 10:40:21

标签: spring spring-boot spring-mvc resttemplate spring-restcontroller

我有2个服务,例如Parent and Child。 在父服务中,拥有

request.setAttribute("key","someValue");

来自父服务的子服务已调用了子服务的端点之一。

restTemplate.exchange(url, HttpMethod.GET, null, Object.class);

在Child RestController中,我期望在Parent中设置属性(键)。

request.getAttribute("key") --> returns null

但是我越来越空了,你能建议我做错了吗?我期望将父级的相同请求对象传递给子级。但是我的理解似乎是错误的。请纠正我。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您要完成什么,但似乎您正在尝试在HttpServletRequest中设置一个属性,并希望将该属性返回到端点。

请求对象是由Web容器创建的,但并未像您认为的那样被“转移” 到您的Child端点。该对象仅存在于正在处理请求的端点上,直到将响应发送回为止。

如果您需要将参数传递给Child终结点,则需要将其作为查询参数添加到url中,例如:

url += "?key=someValue"

,或者如果它是一个更复杂的对象,则应使用 GET 以外的其他HTTP方法,并将其添加为请求的正文。然后,您应该在Child端点中收到该参数。

您可以在此处查看几个示例:

https://springbootdev.com/2017/11/21/spring-resttemplate-exchange-method/