是的,Java Feign 調用可以進行請求攔截。Feign 提供了一個名為 RequestInterceptor
的接口,你可以實現這個接口并在攔截器中進行請求的預處理和后處理。下面是一個簡單的示例:
import feign.RequestInterceptor;
import feign.RequestTemplate;
public class MyRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
// 在發送請求之前執行的代碼,例如添加請求頭
requestTemplate.header("Authorization", "Bearer your_token");
// 在請求發送之后執行的代碼,例如記錄請求日志
System.out.println("Request URL: " + requestTemplate.url());
}
}
接下來,你需要在 Feign 客戶端配置中將這個攔截器添加到 Feign.Builder 中:
import feign.Feign;
import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
public class FeignClientConfig {
public static Feign.Builder createFeignBuilder() {
return Feign.builder()
.client(new CustomFeignClient(new MyRequestInterceptor()))
.decoder(new JacksonDecoder())
.encoder(new JacksonEncoder());
}
}
在這個示例中,我們創建了一個名為 CustomFeignClient
的自定義 Feign 客戶端類,并將 MyRequestInterceptor
添加到了 Feign.Builder 中。這樣,每次發送請求時,都會經過攔截器的處理。