JAVA 項目中接口調用怎麼做 ?
- Httpclient
- Okhttp
- Httpurlconnection
- RestTemplate
上面是最常見的幾種用法,我們今天要介紹的用法比上面的更簡單,方便,它就是Feign
Feign是一個聲明式的REST客戶端,它的目的就是讓REST調用更加簡單。
Feign提供了HTTP請求的模板,通過編寫簡單的接口和插入註解,就可以定義好HTTP請求的參數、格式、地址等信息。
而Feign則會完全代理HTTP請求,我們只需要像調用方法一樣調用它就可以完成服務請求及相關處理。
SpringCloud對Feign進行了封裝,使其支持SpringMVC標準註解和HttpMessageConverters。
Feign可以與Eureka和Ribbon組合使用以支持負載均衡。
區別:
在預訂微服務中,有一個同步呼叫票價(Fare)。RestTemplate是用來製作的同步呼叫。使用RestTemplate時,URL參數是以編程方式構造的,數據被髮送到其他服務。在更復雜的情況下,我們將不得不RestTemplate深入到更低級別的API提供的甚至是API 的細節。
Feign是Spring Cloud Netflix庫,用於在基於REST的服務調用上提供更高級別的抽象。Spring Cloud Feign在聲明性原則上工作。使用Feign時,我們在客戶端編寫聲明式REST服務接口,並使用這些接口來編寫客戶端程序。開發人員不用擔心這個接口的實現。這將在運行時由Spring動態配置。通過這種聲明性的方法,開發人員不需要深入瞭解由HTTP提供的HTTP級別API的細節的RestTemplate。
總結:
也就是說FeignClient簡化了請求的編寫,且通過動態負載進行選擇要使用哪個服務進行消費,而這一切都由Spring動態配置實現,我們不用關心這些,只管使用方法即可。再說,就是簡化了編寫,RestTemplate還需要寫上服務器IP這些信息等等,而FeignClient則不用。
不過話又再說回來,其實RestTemplate同樣可以簡化到使用FeignClient那樣簡單,無非就是自己封裝多一層去實現而已,所以,我個人覺得沒有太多絕對,只是看你的業務需求怎麼定位這個選擇而已。
參考:
http://blog.csdn.net/u010889990/article/details/78673273
https://segmentfault.com/a/1190000009229438
https://www.jianshu.com/p/3d597e9d2d67
http://www.cnblogs.com/duanxz/p/7516676.html
https://www.cnblogs.com/duanxz/p/3510622.html