新网站做seo,元谋网站建设,网站绑定公众号,灰色网站怎么做如何和将原始request的Header中的值传递给openfeign请求的Header#xff1f; 以及又如何获取openfeign请求中Header中的值 如何和将原始request的Header中的值传递给openfeign请求的Header参考 [https://www.jb51.net/article/282522.htm](https://www.jb51.net/article/28252… 如何和将原始request的Header中的值传递给openfeign请求的Header 以及又如何获取openfeign请求中Header中的值 如何和将原始request的Header中的值传递给openfeign请求的Header参考 [https://www.jb51.net/article/282522.htm](https://www.jb51.net/article/282522.htm)借助 RequestHeader注解通过实现 RequestInterceptor 接口示例实现RequestInterceptor 如何获取openfeign请求中Header中的值 如何和将原始request的Header中的值传递给openfeign请求的Header
参考 https://www.jb51.net/article/282522.htm
借助 RequestHeader注解
通过实现 RequestInterceptor 接口
示例实现RequestInterceptor
主要代码
import javax.servlet.http.HttpServletRequest;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 feign.RequestInterceptor;
import feign.RequestTemplate;
import io.micrometer.core.instrument.util.StringUtils;
import io.seata.core.context.RootContext;Configuration
public class ComonConfig {Beanpublic RequestInterceptor requestInterceptor() {return new RequestInterceptor() {Overridepublic void apply(RequestTemplate requestTemplate) {ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request attributes.getRequest(); // 老 request// 从Seata获取XID并将其添加到Feign请求header中String xid RootContext.getXID();if (xid ! null) {requestTemplate.header(TX_XID, xid);}requestTemplate.header(Cookie, request.getHeader(Cookie)); // 新requestrequestTemplate.header(Platform, request.getHeader(Platform)); String pageSizeDefault 20;String pageNumDefalut 1;String pageSize request.getParameter(pageSize);String pageNum request.getParameter(pageNum);if (StringUtils.isNotEmpty(pageSize)) {pageSizeDefault pageSize;}if (StringUtils.isNotEmpty(pageNum)) {pageNumDefalut pageNum;}requestTemplate.header(pageSize, pageSizeDefault);requestTemplate.header(pageNum, pageNumDefalut);
// requestTemplate.header(Accept, application/json;charsetUTF-8);
// requestTemplate.header(Content-Type, application/json;charsetUTF-8);}};}
}以上解释 首先这是一个拦截器用于拦截openfeign的请求然后在apply方法中通过Spring包装的请求获取原始请求并从请求中获取到Header,如名称为‘Platform’的Header,如下
ServletRequestAttributes attributes (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request attributes.getRequest();
request.getHeader(Platform);最后将取出来的Header的值设置到openfeign请求RequestTemplate 的Header中去如下
requestTemplate.header(Platform, request.getHeader(Platform))设置好了那如何取出来openfeign请求中的Header中的值如下
如何获取openfeign请求中Header中的值
还是使用Spring管理的request来取有两种方式
直接通过RequestContextHolder来获取 HttpServletRequest request ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();request.getHeader(Platform);注入方式
import javax.servlet.http.HttpServletRequest;Autowiredprivate HttpServletRequest request;// 直接使用request.getHeader(Platform);即可