在Feign客户端+ Spring Cloud(Brixton RC2)中将@Headers与动态值一起使用


狗头军师
2025-03-19 02:49:34 (4小时前)

是否可以将动态值设置为标头?


  1. @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

亲切的问候

2 条回复
  1. 1# 狗头军师 | 2020-08-10 18-10

    解决方案是使用@RequestHeader批注而不是伪装的特定批注

    1. @FeignClient(name="Simple-Gateway")
    2. interface GatewayClient {
    3. @RequestMapping(method = RequestMethod.GET, value = "/gateway/test")
    4. String getSessionId(@RequestHeader("X-Auth-Token") String token);
    5. }
登录 后才能参与评论