feign.FeignException: status 400 reading xxx 異常


報錯:feign.FeignException: status 400 reading xxx 異常

具體就是feign接口在調用生產者提供的某個方法時異常,無法正常調用。

百思不得其解,因為feign接口和生產者控制器中所寫的方法名是一模一樣的。

都是:

@RequestMapping("/loginLog_logs")
public List<LoginLog> getMyLoginLogs(String username);

為了排除是生產者方面的問題,進行Junit單元測試之后,排除了這種可能。

折騰一個多小時,最后百度了一番,發現有很多種說法:

1-調用服務的時候,消費者接口中的@RequestParam注解中的value值和服務提供者的controller里面的@RequestParam注解里面的value值一定要保持一致,不然就會報這個錯誤。

2-Feign 請求服務,在Controller 之上的 xxxMapping 的注解,如果使用 @RequestMapping 的話, 需要聲明method 屬性, 否則就會引發這個異常。即@RequstMapping方法沒有指定請求方式。

3-Feign的那個方法使用的@RequestParam注解,而接收的參數長度過長,就會導致報400錯誤,這時需要換為@RequestBody。

 

都是什么鬼,發現和我的情況都不一樣,問題並沒有解決。

最后試着嘗試在Feign接口和生產者控制器的方法的參數前加上@RequestParam之后,再指定參數的名字,

@RequestMapping("/loginLog_logs")
public List<LoginLog> getMyLoginLogs(@RequestParam(name="name") String username);

問題竟然解決了。。

也就是說,在遇到這種情況的時候,即使Feign接口和生產者控制器的方法一模一樣,但是因為參數沒有加上@RequestParam且指定參數屬性的名字,就會導致Feign無法成功調用生產端的這個方法。。

同時還可能會報錯顯示為:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

 

 

天坑啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM