成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringCloud怎么使用Feign構造多參數的請求-創(chuàng)新互聯

這篇文章主要介紹Spring Cloud怎么使用Feign構造多參數的請求,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

做網站、成都做網站服務團隊是一支充滿著熱情的團隊,執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯的標準與要求,同時竭誠為客戶提供服務是我們的理念。成都創(chuàng)新互聯公司把每個網站當做一個產品來開發(fā),精雕細琢,追求一名工匠心中的細致,我們更用心!

GET請求多參數的URL

假設我們請求的URL包含多個參數,例如http://microservice-provider-user/get?id=1&username=張三 ,要如何構造呢?

我們知道,Spring Cloud為Feign添加了Spring MVC的注解支持,那么我們不妨按照Spring MVC的寫法嘗試一下:

@FeignClient("microservice-provider-user")
public interface UserFeignClient {
 @RequestMapping(value = "/get", method = RequestMethod.GET)
 public User get0(User user);
}

然而,這種寫法并不正確,控制臺會輸出類似如下的異常。

feign.FeignException: status 405 reading UserFeignClient#get0(User); content:
{"timestamp":1482676142940,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/get"}

由異常可知,盡管我們指定了GET方法,Feign依然會使用POST方法發(fā)送請求。

正確寫法如下:

(1) 方法一

@FeignClient(name = "microservice-provider-user")
public interface UserFeignClient {
 @RequestMapping(value = "/get", method = RequestMethod.GET)
 public User get1(@RequestParam("id") Long id, @RequestParam("username") String username);
}

這是最為直觀的方式,URL有幾個參數,Feign接口中的方法就有幾個參數。使用@RequestParam注解指定請求的參數是什么。

(2) 方法二

多參數的URL也可使用Map來構建。當目標URL參數非常多的時候,可使用這種方式簡化Feign接口的編寫。

@FeignClient(name = "microservice-provider-user")
public interface UserFeignClient {
 @RequestMapping(value = "/get", method = RequestMethod.GET)
 public User get2(@RequestParam Map<String, Object> map);
}

在調用時,可使用類似以下的代碼。

public User get(String username, String password) {
 HashMap<String, Object> map = Maps.newHashMap();
 map.put("id", "1");
 map.put("username", "張三");
 return this.userFeignClient.get2(map);
}

POST請求包含多個參數

下面我們來討論如何使用Feign構造包含多個參數的POST請求。假設服務提供者的Controller是這樣編寫的:

@RestController
public class UserController {
 @PostMapping("/post")
 public User post(@RequestBody User user) {
  ...
 }
}

我們要如何使用Feign去請求呢?答案非常簡單,示例:

@FeignClient(name = "microservice-provider-user")
public interface UserFeignClient {
 @RequestMapping(value = "/post", method = RequestMethod.POST)
 public User post(@RequestBody User user);
}

TIPS

(1) 本節(jié)相關代碼,詳見本書配套代碼中的microservice-provider-user-multiple-params項目和microservice-consumer-movie-feign-multiple-params項目。

(2) 除本節(jié)講解的方式外,我們也可編寫自己的編碼器來構造多參數的請求,但這種方式編碼成本較高,代碼可重用性較低。故此,本書不再贅述。

拓展閱讀

(1) 希望Feign能夠支持參數請求使用POJO的Issue:https://github.com/spring-cloud/spring-cloud-netflix/issues/1253
(2) 建議使用Feign原生的注解的Issue:https://github.com/spring-cloud/spring-cloud-netflix/issues/659
(3) 建議增強Feign的功能:https://github.com/spring-cloud/spring-cloud-netflix/issues/1360
(4) 建議支持可選的Request Body(目前Feign當POST一個null時,會報異常):https://github.com/spring-cloud/spring-cloud-netflix/issues/1047

以上是“Spring Cloud怎么使用Feign構造多參數的請求”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

新聞標題:SpringCloud怎么使用Feign構造多參數的請求-創(chuàng)新互聯
轉載來源:http://jinyejixie.com/article42/djcehc.html

成都網站建設公司_創(chuàng)新互聯,為您提供ChatGPT動態(tài)網站、網站策劃、響應式網站、網站收錄、服務器托管

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

小程序開發(fā)
东明县| 萍乡市| 枣庄市| 花莲市| 莱西市| 鄱阳县| 安新县| 大庆市| 临夏市| 天水市| 台江县| 高密市| 靖江市| 太保市| 郯城县| 伊宁市| 慈溪市| 鹤峰县| 昌都县| 时尚| 大厂| 浑源县| 高州市| 大邑县| 金塔县| 托克逊县| 德清县| 寿宁县| 祁东县| 平遥县| 宁化县| 龙南县| 乌拉特后旗| 瑞丽市| 新田县| 商洛市| 绵阳市| 龙江县| 南郑县| 得荣县| 武平县|