【问题标题】:How to pass multiple RequestHeader when using @FeignClient使用@FeignClient时如何传递多个RequestHeader
【发布时间】:2019-01-29 22:09:25
【问题描述】:

我需要使用 @FeignClient 传递多个请求标头

当它的一个字符串类型的标头 @RequestHeader 工作正常但有多个时,我得到 RequestHeader.value() 在参数 0 上为空,同时启动弹簧启动错误 。

           @RequestMapping(value="/*********employees", method= RequestMethod.GET , consumes = MediaType.APPLICATION_JSON_VALUE)
EmployeeData fetchWorkdayEmployeess(@RequestHeader Map<String, Object> headers);

正如我尝试使用@HeaderMap

    @RequestMapping(value="/*********employees", method= RequestMethod.GET , consumes = MediaType.APPLICATION_JSON_VALUE)
EmployeeData fetchWorkdayEmployeess(@HeaderMap Map<String, Object> headers);

我也尝试将多个@RequestHeaders 作为参数传递,但它似乎不起作用

【问题讨论】:

    标签: spring-boot spring-cloud-feign feign


    【解决方案1】:

    我需要使用自定义 RequestInterceptor

    @Configuration
    class FeignCustomHeaderConfig {
    
        @Bean
        public CSODHeaderAuthRequestInterceptor basicAuthRequestInterceptor() {
            try {
                return new HeaderAuthRequestInterceptor(token_map);
            } catch (Exception e) {
                log.error(e.getLocalizedMessage());
            }
            return new CSODHeaderAuthRequestInterceptor(null);
        }
    
        class HeaderAuthRequestInterceptor implements RequestInterceptor {
    
            //Expensive OAuth2 flow logic
            private HashMap<String, String> tokenMap;
    
            public HeaderAuthRequestInterceptor(HashMap<String, String> tokenMap) {
                this.tokenMap = tokenMap;
            }
    
            @Override
            public void apply(RequestTemplate requestTemplate) {
                if(tokenMap == null)
                    return;
                requestTemplate.header(key1, tokenMap.get(key1));
                requestTemplate.header(key2, tokenMap.get(key2));
                ....
            }
        }
    

    然后将配置类添加到你的feign客户端

    @FeignClient(name="....",url="...",configuration=FeignCustomHeaderConfig.class)
    

    Reference link here :

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 2021-11-14
      • 2020-05-23
      • 2013-02-03
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多