91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringCloud feign對象傳參和普通傳參及遇到的坑如何解決

發布時間:2022-03-16 10:29:38 來源:億速云 閱讀:328 作者:iii 欄目:開發技術

這篇文章主要介紹“SpringCloud feign對象傳參和普通傳參及遇到的坑如何解決”,在日常操作中,相信很多人在SpringCloud feign對象傳參和普通傳參及遇到的坑如何解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringCloud feign對象傳參和普通傳參及遇到的坑如何解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

feign對象傳參和普通傳參及遇到的坑

對象傳參

使用@RequestBody來指定傳參對象

@RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)
    ResultResponse<String> getCode(@RequestBody MatterCodeBO matterCodeBO);

注意:@RequestBody在一個方法內有且只有一個,不能同時存在兩個!

普通傳參

普通傳參使用@RequestParam來指定參數

@RequestMapping(value = "taskApiController/getAll", method = RequestMethod.POST)
List<TaskVO> getAll(@RequestParam("name") String name);

注意:@RequestParam必須指定參數名("name"),否則報錯:RequestParam.value() was empty on parameter 0

遇到的坑-1

首先再次強調Feign是通過http協議調用服務的,重點是要理解這句話,

如果FeignClient中的方法有@PostMapping注解 ,則微服務TaskApiController中對應方法的注解也應當保持一致為@PostMapping,如果不一致,則會報404的錯誤 

調用失敗后會觸發它的熔斷機制,如果@FeignClient中不寫@FeignClient(fallback = TaskFeignClientDegraded.class),會直接報錯

    11:00:35.686 [http-apr-8086-exec-8] DEBUG c.b.p.m.b.c.AbstractBaseController - Got an exception
com.netflix.hystrix.exception.HystrixRuntimeException: TaskFeignClient#getAll() failed and no fallback available.
    at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:819)
    at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:804)

遇到的坑-2

報錯信息:

feign.FeignException:status 400 reading xxx#xxxx(String); content:

原因:因為feign的那個方法使用的@ReqestParam注解,這個接收的參數長度過長造成的,這也是feign就算使用post方法,參數也會放在請求地址后面,而不是放在請求體里面。

解決辦法:將參數封裝成對象,使用@RequestBody標明參數

feign傳遞復雜參數對象需要注意的地方

傳遞復雜參數對象需要用Post

另外需要注意,Feign不支持使用GetMapping 和PostMapping

@RequestMapping(value="user/save",method=RequestMethod.POST)

在傳遞的過程中

復雜對象使用@RequestBody進行注解,同時接收端也需要使用@RequestBody這個注解。 

我遇一個坑:

消費端使用了@RequestBody而服務端沒有接收@RequestBody,這時參數會接收不完整。

//消費端
    @RequestMapping(value="user/save",method=RequestMethod.POST)
    public User save(@RequestBody User user);
//服務端
@PostMapping("save")
    public User save(@RequestBody User user) {
        System.out.println(user);
        return UserService.save(user);
    }

到此,關于“SpringCloud feign對象傳參和普通傳參及遇到的坑如何解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

驻马店市| 肇源县| 汝城县| 福安市| 平遥县| 龙岩市| 富平县| 塘沽区| 友谊县| 沂水县| 济源市| 和政县| 老河口市| 宕昌县| 泰州市| 江永县| 镇安县| 西平县| 龙南县| 嵩明县| 正宁县| 惠来县| 全南县| 宁陵县| 沧州市| 遂昌县| 渝北区| 习水县| 湘乡市| 郎溪县| 杭锦旗| 平谷区| 马龙县| 光泽县| 金秀| 临湘市| 策勒县| 张家界市| 寿阳县| 开远市| 淮南市|