目錄
1、問題描述
在請求某個接口時, 在接口異常的情況下,一次正常返回異常信息,緊接着請求就會報feign.FeignException: status 400 reading xxx
異常的問題
feign.FeignException: status 400 reading OpTacticsInfoApiFeign#saveTactics(TacticsInfoParam,String)
2、產生的原因(可能導致報錯的原因)
背景:項目使用的是微服務架構,採用springboot來開發,所有的服務都是基於內嵌tomcat來運行
2.1 傳遞的參數可能爲空值
2.2 Header信息長度過長 或者 參數信息過長
2.3 參數沒有使用註解指定
2.4 方法沒有指定請求方式
3、解決方案
方案一(針對原因2.1):
@RequestParam(value = "xxx",required = false) String xxx
方案二(針對原因2.2):
修改內嵌tomcat的參數,內嵌tomcat對參數的默認限制是8K,例如:可以修改配置文件server.max-http-header-size=20480
將參數封裝成對象,使用 @RequestBody註解 在feign消費服務上
方案三(針對原因2.3):
@RequestParam(value = "xxx",required = false) String xxx
方案四(針對原因2.4):
Feign 請求服務,在
Controller
之上的xxx
Mapping 的註解,如果使用@RequestMapping
的話, 需要聲明method
屬性, 否則就會引發這個異常,例如:@RequestMapping(value="/...,method=RequestMethos.GET)
注意事項:只能使用@RequstMapping註解,不能使用GetMapping註解
【參考資料】
1、feign.FeignException: status 400 reading xxxFeignService#selectByKeyWord(String) 和 status 404...錯誤