Is it possible to set dynamic values to a header ?
@FeignClient(name="Simple-Gateway") interface GatewayClient { @Headers("X-Auth-Token: {token}") @RequestMapping(method = RequestMethod.GET, value = "/gateway/test") String getSessionId(@Param("token") String token); }
Registering an implementation of RequestInterceptor adds the header but there is no way of setting the header value dynamically
@Bean public RequestInterceptor requestInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate template) { template.header("X-Auth-Token", "some_token"); } }; }
I found the following issue on github and one of the commenters (lpborges) was trying to do something similar using headers in @RequestMapping
annotation.
https://github.com/spring-cloud/spring-cloud-netflix/issues/288
Kind Regards
The solution is to use @RequestHeader annotation instead of feign specific annotations
@FeignClient(name="Simple-Gateway") interface GatewayClient { @RequestMapping(method = RequestMethod.GET, value = "/gateway/test") String getSessionId(@RequestHeader("X-Auth-Token") String token); }
The @RequestHeader did not work for me. What did work was:
@Headers("X-Auth-Token: {access_token}") @RequestLine("GET /orders/{id}") Order get(@Param("id") String id, @Param("access_token") String accessToken);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With