一、单个Feign请求添加header
方法1.在@RequestMapping中添加
@FeignClient(
url = "${orderServer_domain:http://order:8082}",
value = "order-server",
contextId = "OrderServerClient",
path = "/api/order"
)
public interface OrderRemoteClient {
@RequestMapping(value="/detail", method = RequestMethod.POST,
headers = {"Content-Type=application/json;charset=UTF-8"})
Order detail(@RequestParam("orderId") String orderId);
}
方法2. 使用@RequestHeader注解添加
@FeignClient(
url = "${orderServer_domain:http://order:8082}",
value = "order-server",
contextId = "OrderServerClient",
path = "/api/order"
)
public interface OrderRemoteClient {
@RequestMapping(value="/detail", method = RequestMethod.POST)
List<String> detail(@RequestHeader Map<String, String> headerMap, @RequestParam("orderId") String orderId);
}
方法3. 使用@Headers注解添加
@FeignClient(
url = "${orderServer_domain:http://order:8082}",
value = "order-server",
contextId = "OrderServerClient",
path = "/api/order"
)
public interface OrderRemoteClient {
@RequestMapping(value="/detail", method = RequestMethod.POST)
@Headers({"Content-Type: application/json;charset=UTF-8"})
List<String> detail(@RequestHeader Map<String, String> headerMap, @RequestParam("orderId") String orderId);
}
二、全局Feign请求添加header
实现RequestInterceptor接口
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
requestTemplate.header(HttpHeaders.AUTHORIZATION, request.getHeader(HttpHeaders.AUTHORIZATION));
requestTemplate.header("proxyHost", request.getHeader("proxyHost"));
}
}
}