是否可以将动态值设置为标头?
@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注释中的标头做类似的事情。
解决方案是使用@RequestHeader批注而不是伪装的特定批注
@FeignClient(name="Simple-Gateway") interface GatewayClient { @RequestMapping(method = RequestMethod.GET, value = "/gateway/test") String getSessionId(@RequestHeader("X-Auth-Token") String token); }