feign參數(shù)過多導(dǎo)致調(diào)用失敗的解決方案
feign參數(shù)過多調(diào)用失敗
錯誤信息
JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens…
通過feign去調(diào)用其他服務(wù)的時候報上面的錯誤了,當傳入的參數(shù)比較少的時候并沒有錯誤,但是傳入?yún)?shù)一多就自動走hystrix熔斷器了。
通過層層排查
報這個錯誤的原因是因為
JSON 解析錯誤:非法字符((CTRL-CHAR,代碼 31)):令牌之間只允許使用常規(guī)空格(\r、\n、\t)...
json解析錯誤了,開始想的是用一個實體類去接收對面返回的參數(shù),所以報這個錯誤,好吧,那我用一個object去接收吧,
但是結(jié)果顯示還是照樣會走熔斷器,接著就用map去接收返回參數(shù),還是一樣,后來去百度查了說是要配置feign,取消壓縮,
試了,沒用。最后去百度一下說是因為傳輸?shù)臄?shù)據(jù)被壓縮了,只要加入feign的配置去除壓縮限制就行了??墒沁€是沒用,無奈之下只能請教自己的同事。
給出了兩種解決辦法
第一種:將被調(diào)用方的返回數(shù)據(jù)縮小(我就是用的這種方法,但是這個方法不是長久之計)
第二種:使用原生的http去請求對面的api,網(wǎng)上有很多的工具包。
feign多參數(shù)傳遞踩坑記錄
真的是頭大的一天,看了網(wǎng)上好多feign傳參的博客,半天找不到怎么處理又傳遞基本類型又傳遞實體類的,趕緊在這寫下來,可惡
場景
假如現(xiàn)在有一個分頁的請求,前端給了我們消費端的參數(shù)有:
- int類型的pageNum,表示分頁頁碼
- int類型的pageSize,表示每頁數(shù)據(jù)的條數(shù)
- 實體類的相關(guān)參數(shù)
然后我們用的是thymeleaf,所以需要一個model給前端返回分頁相關(guān)參數(shù)
現(xiàn)在的問題是
我要把pageNum、pageSize和實體類傳遞給服務(wù)端,讓他給我分頁結(jié)果的相關(guān)參數(shù)
解決方案
1. 消費端controller:
這里的參數(shù)該怎么接收怎么接收
2. 消費端feign接口對應(yīng)方法:
- 給兩個int類型的數(shù)據(jù)加上@RequestParam
- 給實體類加上@RequestBody
3. 服務(wù)端controller:
和feign接口方法一樣
- 給兩個int類型的數(shù)據(jù)加上@RequestParam
- 給實體類加上@RequestBody
終于是不會報錯了xdm
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud中FeignClient實現(xiàn)文件上傳功能
這篇文章主要為大家詳細介紹了Spring Cloud中FeignClient實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04解決spring-boot-maven-plugin報紅的問題
這篇文章主要給大家介紹一下如何解決spring-boot-maven-plugin報紅的問題,文中通過圖文講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-08-08如何基于Autowired對構(gòu)造函數(shù)進行注釋
這篇文章主要介紹了如何基于Autowired對構(gòu)造函數(shù)進行注釋,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2020-10-10Mybatis-plus與Mybatis依賴沖突問題解決方法
,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧這篇文章主要介紹了Mybatis-plus與Mybatis依賴沖突問題解決方法2021-04-04SpringBoot與Spring中數(shù)據(jù)緩存Cache超詳細講解
我們知道內(nèi)存讀取速度遠大于硬盤讀取速度,當需要重復(fù)獲取相同數(shù)據(jù)時,一次一次的請求數(shù)據(jù)庫或者遠程服務(wù),導(dǎo)致在數(shù)據(jù)庫查詢或者遠程方法調(diào)用上小號大量的時間,最終導(dǎo)致程序性能降低,這就是數(shù)據(jù)緩存要解決的問題,學(xué)過計算機組成原理或者操作系統(tǒng)的同學(xué)們應(yīng)該比較熟悉2022-10-10