亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 幫助中心 > 正文

使用Spring Cloud Feign作為HTTP客戶端調用遠程HTTP服務的方法(

2024-07-09 22:40:29
字體:
來源:轉載
供稿:網友

在Spring Cloud Netflix棧中,各個微服務都是以HTTP接口的形式暴露自身服務的,因此在調用遠程服務時就必須使用HTTP客戶端。我們可以使用JDK原生的URLConnection、Apache的Http Client、Netty的異步HTTP Client, Spring的RestTemplate。但是,用起來最方便、最優雅的還是要屬Feign了。

Feign簡介

Feign是一種聲明式、模板化的HTTP客戶端。在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗,開發者完全感知不到這是遠程方法,更感知不到這是個HTTP請求。比如:

@Autowiredprivate AdvertGropRemoteService service; // 遠程服務public AdvertGroupVO foo(Integer groupId) { return service.findByGroupId(groupId); // 通過HTTP調用遠程服務}

開發者通過service.findByGroupId()就能完成發送HTTP請求和解碼HTTP返回結果并封裝成對象的過程。

Feign的定義

為了讓Feign知道在調用方法時應該向哪個地址發請求以及請求需要帶哪些參數,我們需要定義一個接口:

@FeignClient(name = "ea") // [A]public interface AdvertGroupRemoteService { @RequestMapping(value = "/group/{groupId}", method = RequestMethod.GET) // [B] AdvertGroupVO findByGroupId(@PathVariable("groupId") Integer adGroupId) // [C] @RequestMapping(value = "/group/{groupId}", method = RequestMethod.PUT) void update(@PathVariable("groupId") Integer groupId, @RequestParam("groupName") String groupName)

A: @FeignClient用于通知Feign組件對該接口進行代理(不需要編寫接口實現),使用者可直接通過@Autowired注入。

B: @RequestMapping表示在調用該方法時需要向/group/{groupId}發送GET請求。

C: @PathVariable與SpringMVC中對應注解含義相同。

Spring Cloud應用在啟動時,Feign會掃描標有@FeignClient注解的接口,生成代理,并注冊到Spring容器中。生成代理時Feign會為每個接口方法創建一個RequetTemplate對象,該對象封裝了HTTP請求需要的全部信息,請求參數名、請求方法等信息都是在這個過程中確定的,Feign的模板化就體現在這里。

在本例中,我們將Feign與Eureka和Ribbon組合使用,@FeignClient(name = "ea")意為通知Feign在調用該接口方法時要向Eureka中查詢名為ea的服務,從而得到服務URL。

Feign的Encoder、Decoder和ErrorDecoder

Feign將方法簽名中方法參數對象序列化為請求參數放到HTTP請求中的過程,是由編碼器(Encoder)完成的。同理,將HTTP響應數據反序列化為java對象是由解碼器(Decoder)完成的。

默認情況下,Feign會將標有@RequestParam注解的參數轉換成字符串添加到URL中,將沒有注解的參數通過Jackson轉換成json放到請求體中。注意,如果在@RequetMapping中的method將請求方式指定為POST,那么所有未標注解的參數將會被忽略,例如:

@RequestMapping(value = "/group/{groupId}", method = RequestMethod.GET)void update(@PathVariable("groupId") Integer groupId, @RequestParam("groupName") String groupName, DataObject obj);

此時因為聲明的是GET請求沒有請求體,所以obj參數就會被忽略。

在Spring Cloud環境下,Feign的Encoder*只會用來編碼沒有添加注解的參數*。如果你自定義了Encoder, 那么只有在編碼obj參數時才會調用你的Encoder。對于Decoder, 默認會委托給SpringMVC中的MappingJackson2HttpMessageConverter類進行解碼。只有當狀態碼不在200 ~ 300之間時ErrorDecoder才會被調用。ErrorDecoder的作用是可以根據HTTP響應信息返回一個異常,該異??梢栽谡{用Feign接口的地方被捕獲到。我們目前就通過ErrorDecoder來使Feign接口拋出業務異常以供調用者處理。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大片免费观看在线观看网站推荐| 91天堂在线观看| 欧美亚洲成人xxx| 国产精品视频最多的网站| 日韩欧美在线字幕| 国产精选久久久久久| 国产精品久久久久久久9999| 久久久这里只有精品视频| 欧美激情精品久久久久| 国产亚洲精品久久久久久777| 欧美成人在线免费视频| 色偷偷偷亚洲综合网另类| 久久琪琪电影院| 黑人与娇小精品av专区| 97精品免费视频| 国产一区私人高清影院| 91免费版网站入口| 国产91在线高潮白浆在线观看| 国产精品视频一区二区高潮| 66m—66摸成人免费视频| 国产精品第10页| 欧美成人午夜影院| 亚洲精品久久久久| 成人福利网站在线观看11| 久久人人爽人人爽人人片av高清| www.精品av.com| 九九热精品视频在线播放| 久久久久久综合网天天| 久久精品精品电影网| 91精品久久久久久久久不口人| 97av视频在线| 亚洲自拍偷拍色片视频| 国产精品一区二区久久国产| 日韩av免费看网站| 久久久免费av| 亚洲第一精品夜夜躁人人爽| 国产人妖伪娘一区91| 久久99热这里只有精品国产| 日韩精品免费在线视频| 黄色一区二区三区| 亚洲精品小视频| 欧美在线视频免费| 久久久噜噜噜久久久| 国产精品视频在线观看| 日本久久亚洲电影| 欧美日韩aaaa| 成人黄色中文字幕| 日韩有码片在线观看| 亚洲欧美在线播放| 国模私拍一区二区三区| 91国内免费在线视频| 国内精品免费午夜毛片| 精品偷拍一区二区三区在线看| 亚洲国产精品高清久久久| 最新69国产成人精品视频免费| 久久精品视频va| 伊人精品在线观看| 日韩在线激情视频| 久久成人亚洲精品| 日韩电影免费观看在线| 久久综合九色九九| 欧美特黄级在线| 久久99热精品| 亚洲高清免费观看高清完整版| 91成人在线观看国产| 亚洲欧美国产一区二区三区| 欧美福利视频网站| 国产一区二区三区三区在线观看| 韩国福利视频一区| 欧美日韩加勒比精品一区| 久久国产精品久久精品| 欧美日韩免费一区| 日韩av中文在线| 欧美性资源免费| 亚洲欧美日韩一区在线| 亚洲精品自产拍| 国产午夜精品全部视频播放| 在线观看欧美成人| 久久男人的天堂| 欧美网站在线观看| 国产成+人+综合+亚洲欧美丁香花| 日韩经典一区二区三区| 亚洲第一网站男人都懂| 日本韩国欧美精品大片卡二| 欧美黑人一区二区三区| 7m第一福利500精品视频| 久久色精品视频| 亚洲综合在线中文字幕| 欧美亚洲在线播放| 亚洲欧美日韩中文在线| 欧美大片在线看| 亚洲精品有码在线| 欧美黄色片视频| 日韩理论片久久| 久久国产精品偷| 国产69精品99久久久久久宅男| 亚洲综合中文字幕68页| 亚洲欧美国产制服动漫| 久久久久中文字幕| 中日韩午夜理伦电影免费| 55夜色66夜色国产精品视频| 色综合久久久888| 欧美性xxxxx极品| 91视频九色网站| 欧美精品videosex牲欧美| 成人午夜高潮视频| 美女999久久久精品视频| 色综合伊人色综合网站| 亚洲国产成人爱av在线播放| 午夜精品美女自拍福到在线| 欧美日韩xxx| 中文字幕自拍vr一区二区三区| 欧美性xxxxx极品娇小| 国产一区二区三区毛片| 色青青草原桃花久久综合| 亚洲色图欧美制服丝袜另类第一页| 91久久久久久久久久久久久| 亚洲天堂av在线播放| 另类天堂视频在线观看| 91成人在线观看国产| 亚洲精品日韩激情在线电影| 日韩av在线免费观看| 亚洲一区二区三区在线免费观看| 久久久人成影片一区二区三区观看| 久久久久成人精品| 亚洲女人天堂av| 成人黄色影片在线| 北条麻妃一区二区三区中文字幕| 久久av红桃一区二区小说| 久久亚洲精品小早川怜子66| 久久av红桃一区二区小说| 伊人久久综合97精品| 在线视频欧美性高潮| 亚洲一区免费网站| 韩国三级日本三级少妇99| 欧美色播在线播放| 精品亚洲va在线va天堂资源站| 成人激情在线播放| 中文字幕亚洲欧美| 日本道色综合久久影院| 国产成人精品a视频一区www| 国产午夜精品美女视频明星a级| 两个人的视频www国产精品| 亚洲国内精品在线| 亚洲成人久久电影| 国产suv精品一区二区三区88区| 欧美俄罗斯乱妇| 久久久av免费| 最好看的2019年中文视频| 亚洲精品网站在线播放gif| 丝袜亚洲欧美日韩综合| 日韩精品中文在线观看| 一本色道久久综合狠狠躁篇的优点| 超碰日本道色综合久久综合| 91黄色8090| 亚洲欧美国产精品| 国产亚洲视频在线| 美日韩丰满少妇在线观看| 色噜噜狠狠色综合网图区| 亚洲自拍在线观看| 久久99热这里只有精品国产| 欧美极品美女电影一区| 国产日韩av在线播放| 日韩性xxxx爱|