feign 發送請求時,傳多個參數時的寫法


第一:傳參方式寫法,當參數個數大於2個時,需要用@RequestParam
 @PostMapping(value = "/configReader/configValue.do",headers = {"Accept=application/json","Content-Type=application/x-www-form-urlencoded"})
//正確的寫法
String getMaxCount(@RequestParam("projectName") String projectName, @RequestParam("wordName") String wordName);
//錯誤的傳參方式,會報錯
String getMaxCount(String projectName, String wordName);

報錯代碼為:nested exception is java.lang.IllegalStateException: Method has too many Body parameters: public abstract java.lang.String


第二,@RequestParam 注解的正確用法(很重要!!)
 @PostMapping(value = "/configReader/configValue.do",headers = {"Accept=application/json","Content-Type=application/x-www-form-urlencoded"})
//正確的寫法
String getMaxCount(@RequestParam("projectName") String projectName, @RequestParam("wordName") String wordName);
好多人沒弄明白到底是把“projectName ”里面的參數賦值給projectName,還是把外面的projectname賦值給“projectName”,因為都寫一樣的,就區分不出來了。

(1)
@RequestParam 作為數據發送方 參數配置時,實驗如下:
 
        
實驗一:
數據發送請求方:
@PostMapping(value = "/configReader/configValue.do",headers = {"Accept=application/json","Content-Type=application/x-www-form-urlencoded"})
String getMaxCount(@RequestParam("project") String projectName, @RequestParam("wordName") String wordName);
數據接收方:
String getConfigValue(@RequestParam("projectName") String projectName, @RequestParam("wordName") String wordName)
結果:請求失敗,因為
@RequestParam("project") 與@RequestParam("projectName") 不一致
 
        
實驗二:
數據發送請求方:
@PostMapping(value = "/configReader/configValue.do",headers = {"Accept=application/json","Content-Type=application/x-www-form-urlencoded"})
String getMaxCount(@RequestParam("projectName") String project, @RequestParam("wordName") String wordName);
數據接收方:
String getConfigValue(@RequestParam("projectName") String projectName, @RequestParam("wordName") String wordName)
結果:請求成功

最終結論:@RequestParam("projectName") 是取的別名,String project 是用來接受值的,並將值賦值給別名@RequestParam("projectName") ,然后發送給外部,外部接收數據時,只認別名projectName,一樣時才可以接收到數據。
(2)@RequestParam 作為數據接收方,參數配置時,參考
https://www.cnblogs.com/silentdoer/archive/2017/08/31/7459395.html
此時@RequestParam(name="userName", required = false) String[] userNames) username是瀏覽器請求的參數,userNames 是最終接收的變量


免責聲明!

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



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