前言:
现时各位老铁们对“http请求拦截工具”可能比较重视,你们都想要学习一些“http请求拦截工具”的相关内容。那么小编同时在网摘上收集了一些对于“http请求拦截工具””的相关文章,希望你们能喜欢,朋友们快快来了解一下吧!在使用Feign做服务间调用的时候,如何修改请求的头部或编码信息呢,可以通过实现RequestInterceptor接口的apply方法,feign在发送请求之前都会调用该接口的apply方法,所以我们也可以通过实现该接口来记录请求发出去的时间点。
@Beanpublic RequestInterceptor requestInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if(attributes!=null){ HttpServletRequest request = attributes.getRequest(); if(request !=null){ String trcId = request.getHeader(TrcFilter.HEADER_X_ZUUL_TRC_ID); requestTemplate.header(TrcFilter.HEADER_X_ZUUL_TRC_ID,trcId); log.info("feign拦截器获取到的trcid={}",trcId); } } } };}
RequestInterceptor接口定义了apply方法,其参数为RequestTemplate;它有一个抽象类为BaseRequestInterceptor,还有几个实现类分别为BasicAuthRequestInterceptor、FeignAcceptGzipEncodingInterceptor、FeignContentGzipEncodingInterceptorBasicAuthRequestInterceptor实现了RequestInterceptor接口,其apply方法往RequestTemplate添加名为Authorization的headerBaseRequestInterceptor定义了addHeader方法,往requestTemplate添加非重名的header;FeignAcceptGzipEncodingInterceptor继承了BaseRequestInterceptor,它的apply方法往RequestTemplate添加了名为Accept-Encoding,值为Gzip,deflate的header;FeignContentGzipEncodingInterceptor继承了BaseRequestInterceptor,其apply方法先判断是否需要compression,即mimeType是否符合要求以及content大小是否超出阈值,需要compress的话则添加名为Content-Encoding,值为Gzip,deflate的header
标签: #http请求拦截工具