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);
}
}