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)文章
使用concurrentHashMap如何實現(xiàn)緩存
文章介紹了使用ConcurrentHashMap實現(xiàn)緩存的線程安全性和初始化方法,以及如何處理高并發(fā)場景下的緩存清理和數(shù)據(jù)一致性問題,包括分桶、使用ConcurrentLinkedQueue以及使用CountDownLatch來確保緩存數(shù)據(jù)的不丟失2025-02-02
SpringBoot項目中@RestControllerAdvice全局異常失效問題的解決
@RestController注解是一個用于定義RESTful Web服務(wù)的控制器的特殊注解,它是@Controller和@ResponseBody注解的結(jié)合體,意味著你不需要在每個處理請求的方法上都添加@ResponseBody,本文給大家介紹了解決SpringBoot項目中@RestControllerAdvice全局異常失效問題2024-11-11
java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機打不開
這篇文章主要為大家介紹了java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機打不開的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
SpringCloud之分布式配置中心Spring Cloud Config高可用配置實例代碼
這篇文章主要介紹了SpringCloud之分布式配置中心Spring Cloud Config高可用配置實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
java 解決異常 2 字節(jié)的 UTF-8 序列的字節(jié)2 無效的問題
這篇文章主要介紹了java 解決異常 2 字節(jié)的 UTF-8 序列的字節(jié) 2 無效的問題的相關(guān)資料,需要的朋友可以參考下2016-12-12
springboot下實現(xiàn)RedisTemplate?List?清空
我們經(jīng)常會使用Redis的List數(shù)據(jù)結(jié)構(gòu)來存儲一系列的元素,當我們需要清空一個List時,可以使用RedisTemplate來實現(xiàn),本文就來詳細的介紹一下如何實現(xiàn),感興趣的可以了解一下2024-01-01

