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")); } } /** * @desc : 拦截feign请求 * @author : 洪旭东 * @date : 2024-03-12 17:08 */ // @Bean public RequestInterceptor cloudContextInterceptor() { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request; if (attributes != null) { request = attributes.getRequest(); if ("".equals(request.getRequestURI()) && request.getAttribute("svcCode")!=null) { String svcCode = request.getAttribute("svcCode").toString(); return template -> { //例 //@PostMapping("//" + "mdm-server-$CLUSTER_ID" + Constant.USER+"/get_current") String url = template.url(); //将$CLUSTER_ID替换为集群名称 if (url.contains("$CLUSTER_ID")) { url = url.replace("$CLUSTER_ID", svcCode); template.uri(url); } //添加http前缀 if (url.startsWith("//")) { url = "http:" + url; template.target(url); template.uri(""); } }; } } return requestTemplate -> {}; } }