Feign接口统一携带请求头配置(RequestTemplate)
1:需求
请求feign的时候,需要在请求头携带token信息,参数名为:Authorization
2:方案
import com.alibaba.fastjson.JSON; import feign.RequestTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import java.util.Collection; import java.util.Map; @Configuration public class FeignConfiguration implements feign.RequestInterceptor { private final static Logger logger = LoggerFactory.getLogger(FeignConfiguration.class); @Override public void apply(RequestTemplate requestTemplate) { //1:获取普通参数 Map<String, Collection<String>> queries = requestTemplate.queries(); Collection<String> authorization = queries.get("Authorization"); if (authorization != null) { requestTemplate.header("Authorization", authorization); return; } //2:获取Body中的参数 try { byte[] bytes = requestTemplate.requestBody().asBytes(); if (bytes != null) { Map obj = JSON.parseObject(bytes, Map.class); Object simToken = obj.get("Authorization"); if (simToken != null && !"".equals(simToken)) { requestTemplate.header("Authorization", simToken.toString()); return; } } } catch (Exception e) { logger.warn("解析标识失败!{}", e); } logger.warn("请求未找到应用鉴权标识!"); } }
上述代码,会在请求feign之前,获取请求该feign的接口参数Authorization,并且把它设置到请求头里面。

浙公网安备 33010602011771号