1. 程式人生 > >feign 發送請求時,傳多個參數時的寫法

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

method 接受 public ati -s state dna www. orm

第一:傳參方式寫法,當參數個數大於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 是最終接收的變量

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