通常來說,很多人用feign是用於內部環境的spring cloud微服務調用。但feign其實是封裝了http請求,那調用外部restful api是沒有問題的。
在此講下集成步驟,還有幾種配置方法,以及壹些註意點。
這裏要註意的是,和springboot 版本匹配問題. 壹開始使用了2.* 的feign版本,而我的springboot 是 2.6.5,然後報spring boot configration類找不到。更新feign到3.1.1就可以了。
這個各種文章都有,
代碼示例:
還是比較簡潔的,不過, 似乎依賴spring框架比較多 ,不知道在其他環境集成是不是還是這麽簡單。
因為配置請求參數,和統壹的業務處理我是放在壹起的,所以這裏也壹起說明。
API請求的參數,主要包括像格式、字符集等。而統壹業務處理,比如像加簽、加密這些。
feign的配置有三種方式,按照作用域如下
根據我的日誌打印,是先調用2的實例配置,再調用全局配置。 假如兩個都配置,需要註意這個優先級。
======= local ApiInterceptor start ========
======= local ApiInterceptor end ========
======= global ApiInterceptor start ========
======= global ApiInterceptor end ========
使用 @Configuration 的配置註入,並且需要 實現 RequestInterceptor 接口。
作用域是全局的,所以不適合做業務相關的處理。不過妳假如只有壹個client配置,寫這裏也無妨。
業務處理的方式,是獲取body或者query參數,處理後,再放到header, query, body中去。
因為全局配置會影響所有的feign,所以假如項目中有不同的feign client,使用的時候不應該采用全局。
實例配置,自己建立壹個interceptor,然後在ApiClient中配置
註意,實例的配置不應該加入@Configuration 的註解 ,防止被註入。
這種配置方式就是直接在requestMap上增加,其實之前寫的 method 就是如此。還可以增加其他的,比如如下,就是請求亂碼可以增加壹下header。
好了,集成入門就到此。簡單使用應該問題不大了。 假如生產使用,還需要測試性能,連接池等問題。
我是窩牛,專註於各種大雜燴,各種都寫,都寫不好。歡迎討論交流。