课程网站模板,永嘉网站制作公司,今天wordpress很慢,菏泽网站建设公司有哪些一、SpringBoot常用拦截器
下面3种拦截器#xff0c;都是http拦截器#xff0c;在处理业务逻辑之前对http请求信息进行处理#xff0c;比如获取请求头#xff0c;请求参数#xff0c;设置请求头#xff0c;请求参数等等
思路清晰#xff0c;先说jar包:
HandlerInterc…一、SpringBoot常用拦截器
下面3种拦截器都是http拦截器在处理业务逻辑之前对http请求信息进行处理比如获取请求头请求参数设置请求头请求参数等等
思路清晰先说jar包:
HandlerInterceptor—spring-webmvc项目org.springframework.web.servlet.HandlerInterceptor
ClientHttpRequestInterceptor—spring-web项目org.springframework.http.client.ClientHttpRequestInterceptor
RequestInterceptor—feign-core项目feign.RequestInterceptor一目了然从项目名称和包路径可以看出3个拦截器分别属于3个不同的项目所以他们之前的作用也有区别在这里我大概讲一下3个拦截器的基本应用和区别
3个拦截器的共同点都是对http请求进行拦截但是http请求的来源不同
HandlerInterceptor是最常规的其拦截的http请求是来自于客户端浏览器之类的是最常见的http请求拦截器
ClientHttpRequestInterceptor是对RestTemplate的请求进行拦截的在项目中直接使用restTemplate.getForObject的时候会对这种请求进行拦截经常被称为RestTempalte拦截器或者Ribbon拦截器
RequestInterceptor常被称为是Feign拦截器由于Feign调用底层实际上还是http调用因此也是一个http拦截器在项目中使用Feign调用的时候可以使用此拦截器ClientHttpRequestInterceptor
ClientHttpRequestInterceptor是一个接口用于在发送HTTP请求之前或之后拦截请求并进行修改。它可以用于添加、修改或删除请求头、请求参数、请求体等内容以及在请求完成后处理响应。使用ClientHttpRequestInterceptor可以方便地实现一些常见的功能例如
1. 添加认证信息在每个请求中添加认证信息例如token或用户名密码。2. 添加请求头在每个请求中添加自定义的请求头例如User-Agent、Referer等。3. 修改请求参数在发送请求之前修改请求参数例如添加时间戳、签名等。4. 处理响应在请求完成后处理响应例如解析响应体、记录日志等。使用ClientHttpRequestInterceptor需要实现其中的intercept方法该方法接收两个参数ClientHttpRequest和byte[]前者表示当前的请求对象后者表示请求体的字节数组。在intercept方法中可以对请求进行修改例如添加请求头、修改请求体等。修改后的请求会继续传递给下一个拦截器或发送到服务端。对于响应的处理可以使用ResponseExtractor或自定义的响应处理器。
示例代码
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;import java.io.IOException;public class MyInterceptor implements ClientHttpRequestInterceptor {Overridepublic ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {// 在请求发送之前对请求进行修改或添加一些额外的信息request.getHeaders().add(Authorization, Bearer token123);// 执行请求ClientHttpResponse response execution.execute(request, body);// 在请求发送之后对响应进行修改或添加一些额外的信息response.getHeaders().add(Cache-Control, no-cache);return response;}
}在上面的示例中我们实现了ClientHttpRequestInterceptor接口并重写了intercept方法。在这个方法中我们首先对请求添加了一个名为Authorization的请求头然后通过ClientHttpRequestExecution对象的execute方法执行了请求并得到了响应。最后我们又对响应添加了一个名为Cache-Control的响应头并返回了响应。
要使用这个拦截器可以将它注册到RestTemplate中如下所示
import org.springframework.web.client.RestTemplate;public class MyClient {public static void main(String[] args) {RestTemplate restTemplate new RestTemplate();restTemplate.getInterceptors().add(new MyInterceptor());// 发送HTTP请求String result restTemplate.getForObject(http://example.com/api, String.class);System.out.println(result);}
}在上面的示例中我们创建了一个RestTemplate对象并将MyInterceptor拦截器添加到了它的拦截器列表中。然后我们使用RestTemplate对象发送了一个HTTP GET请求并打印了响应结果。
总结
ClientHttpRequestInterceptor是Spring框架中的一个拦截器接口用于拦截客户端发出的HTTP请求。通过实现这个接口并将拦截器注册到RestTemplate中可以对请求进行修改或添加一些额外的信息。
参考博客https://blog.csdn.net/weixin_41979002/article/details/124778961