遇見的困擾
筆者今天被一個問題困擾了一段時間
看如下代碼:
@RestController
@RequestMapping("/getTest")
public class GetTestController {
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam("userIdList") List<String> userIdList){
return userIdList;
}
}
@RequestParam修飾了一個list
那么用PostMan該如何傳入數(shù)組呢嘱能?
實際上很簡單
在這里記錄一下:
其實只要按參數(shù)名字傳入一個按都好分隔的字符串就好了
不用@RequestParam和用@RequestParam的區(qū)別
1. 不用@RequestParam
不用的代碼:
@RequestMapping("/noAnnotationTest")
public String[] noAnnotationTest(String[] userIdList){
return userIdList;
}
- 不傳參數(shù)的時候不會報錯
- 要傳參數(shù)的時候翩迈,只能獲取url上的參數(shù)芯义,不能獲取form-data的數(shù)據(jù)
- 要傳參數(shù)的時候棘幸,url的參數(shù)名字只能和參數(shù)名一樣四康。
訪問方式如下:
localhost:8080/getTest/noAnnotationTest?userIdList=123,123
2. 用@RequestParam
用的代碼
1.1. 如果用了古涧,如下:
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam List<String> userIdList){
return userIdList;
}
那么你必須傳參數(shù)馍乙,而且參數(shù)的key值一定要是userIdList
訪問就應(yīng)該如下訪問:
localhost:8080/getTest/listRaramTest?userIdList=123,123
1.2. 在下面這種情況下是可穿可不傳
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam(required = false) List<String> userIdList){
return userIdList;
}
1.3. 那么我不想?yún)?shù)的key是userIdList怎么辦呢,下面就能修改傳入?yún)?shù)的key值
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam(name = "userIds") List<String> userIdList){
return userIdList;
}
或者像下面那樣配置:
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam(value = "userIds") List<String> userIdList){
return userIdList;
}
訪問方式如下:
localhost:8080/getTest/listRaramTest?userIds=123,123
注意:name和value的作用是一樣的因惭,value只是name的別名
1.4 那如果我不想傳參數(shù)岳锁,但是我又不想傳入的值為空绩衷,那么可以像如下的方式:
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam(defaultValue = "456,456") List<String> userIdList){
return userIdList;
}
這樣就算像如下的方式訪問也不會傳入的值為null
localhost:8080/getTest/listRaramTest
最后的強調(diào)
不加注解只能接收url參數(shù)
加了@RequestParam后即能接收url的參數(shù)蹦魔,也能接收form-data參數(shù),但是只支持Content-Type: 為 application/x-www-form-urlencoded的參數(shù)傳入