您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么用Feign調用遠程HTTP服務”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Feign調用遠程HTTP服務”吧!
Feign是一種聲明式、模板化的HTTP客戶端。在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。比如:
@Autowired private AdvertGropRemoteService service; // 遠程服務 public AdvertGroupVO foo(Integer groupId) { return service.findByGroupId(groupId); // 通過HTTP調用遠程服務 }
不嗶嗶了直接上代碼吧:
maven配置:
<!-- 使用Apache HttpClient替換Feign原生httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-httpclient</artifactId> <version>8.18.0</version> </dependency> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-core</artifactId> <version>8.18.0</version> </dependency> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-gson</artifactId> <version>8.18.0</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency>
Feign在默認情況下使用的是JDK原生的URLConnection
發送HTTP請求,沒有連接池,但是對每個地址會保持一個長連接,即利用HTTP的persistence connection
。我們可以用Apache的HTTP Client替換Feign原始的http client, 從而獲取連接池、超時時間等與性能息息相關的控制能力。Spring Cloud從Brixtion.SR5
版本開始支持這種替換,首先在項目中聲明Apache HTTP Client和feign-httpclient
依賴.
Feign定義:
import com.migr.common.ws.ResponseBean; import feign.Param; import feign.RequestLine; /** * Created by Administrator on 2017/10/27. */ public interface AOranService{ @RequestLine("POST /exec?m={m}&reqJson={reqJson}&token={token}")// get 提交 ResponseBean findParentOrgan(@Param("m") String m, @Param("reqJson") String reqJson, @Param("token") String token); }
如何調用:
//這一段完全可以做聲工具類或者單例實現 // http://base.dianxiaohuocy.net/api 為接口地址 AOranService oranService = Feign.builder() .decoder(new GsonDecoder()) .encoder(new GsonEncoder()) .target(AOranService.class, "http://base.dianxiaohuocy.net/api"); Map<String, String> reqMap = new HashMap<>(); reqMap.put("vendorId", "3"); reqMap.put("organCode", "10101"); reqMap.put("organLevel", "2"); String token = "H8DH9Snx9877SDER5667"; String reqJson = JsonUtil.g.toJson(reqMap); // 以上 // 以下是真正通過Feign調用接口的方法 ResponseBean str = oranService.findParentOrgan("findParentOrgan", reqJson, token);
所調用的接口:
@RequestMapping(value = "/exec") @ResponseBody public Object exec(@RequestParam(value = "m", required = true) String m, @RequestParam(value = "reqJson", required = true) String reqJson, @RequestParam(value = "token", required = true) String token){ // 內部實現完全沒必要關注 }
感謝各位的閱讀,以上就是“怎么用Feign調用遠程HTTP服務”的內容了,經過本文的學習后,相信大家對怎么用Feign調用遠程HTTP服務這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。