1、問題描述
今天使用OpenFeign調用遠程接口時,eign.FeignException: status 400 reading,
於是百度解決。先做如下總結
2、產生原因
背景:項目使用的是微服務架構,采用springboot來開發,所有的服務都是基於內嵌tomcat來運行
1) 傳遞的參數可能為空值
2) Header信息長度過長 或者 參數信息過長
3) 參數沒有使用注解指定
4) 方法沒有指定請求方式
3、解決方案
方案一(針對原因1):
@RequestParam(value = "xxx",required = false) String xxx
方案二(針對原因2):
修改內嵌tomcat的參數,內嵌tomcat對參數的默認限制是8K,例如:可以修改配置文件server.max-http-header-size=20480
將參數封裝成對象,使用 @RequestBody注解 在feign消費服務上
方案三(針對原因3):
@RequestParam(value = "xxx",required = false) String xxx
方案四(針對原因4)
Feign 請求服務,在Controller 之上的 xxxMapping 的注解,如果使用 @RequestMapping 的話,
需要聲明method 屬性, 否則就會引發這個異常,例如:@RequestMapping(value="/...,method=RequestMethos.GET)
參考鏈接:https://blog.csdn.net/weixin_44299027/article/details/104536836