SpringBoot Feign 拦截器执行两次的原因分析与解决方案
在使用 SpringBoot 整合 Feign 时,尝试实现 FeignRequestInterceptor 拦截器,在测试中发现一次请求拦截器的 apply 方法执行了两次。
可能是因为 Feign 在请求时会先发送一个 OPTIONS 请求进行预检,而在预检请求中也会执行拦截器的 apply 方法,从而导致 apply 方法被执行了两次。
可以在 apply 方法中添加日志打印,查看请求的方法和 URL,以确认是否是因为预检请求导致的。如果是预检请求引起的,可以在拦截器中对请求方法进行判断,避免重复执行业务逻辑。
例如,可以在拦截器中添加以下代码判断请求方法是否为 OPTIONS:
@Override
public void apply(RequestTemplate template) {
if (!template.method().equalsIgnoreCase("OPTIONS")) {
// 执行业务逻辑
}
}
通过这种方式,可以避免在预检请求中执行业务逻辑,从而解决 apply 方法执行两次的问题。
原文地址: https://www.cveoy.top/t/topic/mkQu 著作权归作者所有。请勿转载和采集!