是否可以为标题设置动态值?
@FeignClient(name="Simple-Gateway")
interface GatewayClient {
@Headers("X-Auth-Token: {token}")
@RequestMapping(method = RequestMethod.GET, value = "/gateway/test")
String getSessionId(@Param("token") String token);
}
注册RequestInterceptor的实现会添加标头,但无法动态设置标头值
@Bean
public RequestInterceptor requestInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate template) {
template.header("X-Auth-Token", "some_token");
}
};
}
我在github上发现了以下问题,其中一个评论者(lpborges)试图在@RequestMapping
注解中使用标题来做类似的事情。
https://github.com/spring-cloud/spring-cloud-netflix/issues/288
此致
7条答案
按热度按时间nx7onnlm1#
解决方案是使用@RequestHeader注解,而不是伪造特定的注解
qxsslcnc2#
@RequestHeader对我不起作用。起作用的是:
64jmpszr3#
@HeaderMap、@Header和@Param对我不起作用,下面是在使用FeignClient传递多个头参数时使用@RequestHeader的解决方案
调用代理的代码如下:
0sgqnhkj4#
我有这个例子,我使用@HeaderParam代替@RequestHeader:
3z6pesqy5#
您可以使用HttpHeaders。
ff29svar6#
我使用
@HeaderMap
,因为如果你使用Open feign,它看起来非常方便。使用这种方式,你可以动态地传递头键和值。现在创建伪REST客户机来调用服务端点,创建头属性Map并将其传入方法参数。
66bbxpm57#
现在讲这个有点晚了,但是如果需要一个强制的、模板化的值,我发现这在 Boot 中是有效的,显然,只要
toString()
给出一个有效的头值,就可以使用任何类型。