package com.dk.common.infrastructure.config; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * @author H_x_d * @date_time 2020-09-17 10:36 * @description Feign配置文件 */ @Configuration public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request; if (attributes != null) { request = attributes.getRequest(); requestTemplate.header("Authorization", request.getHeader("Authorization")); if (request.getRequestURI().contains("/register_company") && request.getAttribute("svcCode")!=null) { String svcCode = request.getAttribute("svcCode").toString(); //例 //@PostMapping("//" + "mdm-server-$CLUSTER_ID" + Constant.USER+"/get_current") String url = requestTemplate.url(); //将$CLUSTER_ID替换为集群名称 if (url.contains("$CLUSTER_ID")) { url = url.replace("$CLUSTER_ID", svcCode); requestTemplate.uri(url); } //添加http前缀 if (url.startsWith("//")) { url = "http:" + url; requestTemplate.target(url); requestTemplate.uri(""); } } } } }