Feign透传请求头等

Feign透传请求头等

在用Feign进行接口转发时,可能需要直接透传请求头。

添加Feign配置

@Configuration
public class FeignServerAuthConfig {
    
    
    @Bean
    public RequestInterceptor requestInterceptor(){
    
    
        return new FeignMyRequestInterceptor();
    }
    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    public Encoder feignFormEncoder() {
    
    
        return new FormEncoder(new SpringEncoder(messageConverters));
    }
}

添加Feign拦截器

public class FeignMyRequestInterceptor implements RequestInterceptor {
    
    

    @Override
    public void apply(RequestTemplate requestTemplate) {
    
    
        // 获取当前请求Spring信息
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        // 获取请求体
        HttpServletRequest request = attributes.getRequest();
        // 获取Header、或参数等
        String token = request.getHeader("x-token");
        // 注入Feign请求体
        requestTemplate.header("x-token", token);
    }
}

猜你喜欢

转载自blog.csdn.net/LitongZero/article/details/107468589