我有2个服务,例如Parent and Child。 在父服务中,拥有
request.setAttribute("key","someValue");
来自父服务的子服务已调用了子服务的端点之一。
restTemplate.exchange(url, HttpMethod.GET, null, Object.class);
在Child RestController中,我期望在Parent中设置属性(键)。
request.getAttribute("key") --> returns null
但是我越来越空了,你能建议我做错了吗?我期望将父级的相同请求对象传递给子级。但是我的理解似乎是错误的。请纠正我。
谢谢。
答案 0 :(得分:1)
我不确定您要完成什么,但似乎您正在尝试在HttpServletRequest中设置一个属性,并希望将该属性返回到端点。
请求对象是由Web容器创建的,但并未像您认为的那样被“转移” 到您的Child端点。该对象仅存在于正在处理请求的端点上,直到将响应发送回为止。
如果您需要将参数传递给Child终结点,则需要将其作为查询参数添加到url中,例如:
url += "?key=someValue"
,或者如果它是一个更复杂的对象,则应使用 GET 以外的其他HTTP方法,并将其添加为请求的正文。然后,您应该在Child端点中收到该参数。
您可以在此处查看几个示例:
https://springbootdev.com/2017/11/21/spring-resttemplate-exchange-method/