在項目中,常見的發起http/https請求的方式一般是通過「okhttp3.OkHttpClient」,通過顯式的拼接url、添加請求頭、指定url就可以創建一個Request,然后通過OkHttpClient發起請求。如下
但是這種方式有問題:
- url需要仔細拼接,防止url出錯
- 如果有大量的地方有這種業務需求,會導致重復代碼太多,並且由於url的拼接規則都不一樣,無法將這些重復代碼提取出來,造成了項目臃腫。
- 結構化不清楚
所以可以使用FeignClient,通過定義接口的方式將請求結構化。
- 先定義一個接口。
- 添加FeignClinet注解,其中「url」表示請求的基地址,「name」的值就是Spring容器中聲明的bean名字。
- 編寫方法。
該接口的意思是發送「get」請求,並且該請求的請求頭是由「@RequestHeader」指定的,「@RequestHeader」中的「authorization」是請求頭的名字,之后在調用該方法的時候傳入的值作為請求頭的值。其他的也類似。
「@GetMapping」中的「consumes」指的是發起請求時的「content-type=application/json」,而「produces」是告訴服務器,我需要接受到的數據格式為application/json,即請求頭中的「accept=application/json」。
Post請求:
其實FeignClient的使用方法和正常使用Spring MVC類似。當然,方法的返回值也可以是實體類,FeignClient可以自動封裝對象。
常見的問題: