在使用 SpringBoot 整合 Feign 时,尝试实现 FeignRequestInterceptor 拦截器,在测试中发现一次请求拦截器的 apply 方法执行了两次。

可能是因为 Feign 在请求时会先发送一个 OPTIONS 请求进行预检,而在预检请求中也会执行拦截器的 apply 方法,从而导致 apply 方法被执行了两次。

可以在 apply 方法中添加日志打印,查看请求的方法和 URL,以确认是否是因为预检请求导致的。如果是预检请求引起的,可以在拦截器中对请求方法进行判断,避免重复执行业务逻辑。

例如,可以在拦截器中添加以下代码判断请求方法是否为 OPTIONS:

@Override
public void apply(RequestTemplate template) {
    if (!template.method().equalsIgnoreCase("OPTIONS")) {
        // 执行业务逻辑
    }
}

通过这种方式,可以避免在预检请求中执行业务逻辑,从而解决 apply 方法执行两次的问题。

SpringBoot Feign 拦截器执行两次的原因分析与解决方案

原文地址: https://www.cveoy.top/t/topic/mkQu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录