遇见的困扰
笔者今天被一个问题困扰了一段时间
看如下代码:
@RestController
@RequestMapping("/getTest")
public class GetTestController {
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam("userIdList") List<String> userIdList){
return userIdList;
}
}
@RequestParam修饰了一个list
那么用PostMan该如何传入数组呢?
实际上很简单
在这里记录一下:
![](https://img.haomeiwen.com/i7725094/2b6ece1e72380eea.png)
其实只要按参数名字传入一个按都好分隔的字符串就好了
不用@RequestParam和用@RequestParam的区别
1. 不用@RequestParam
不用的代码:
@RequestMapping("/noAnnotationTest")
public String[] noAnnotationTest(String[] userIdList){
return userIdList;
}
- 不传参数的时候不会报错
- 要传参数的时候,只能获取url上的参数,不能获取form-data的数据
- 要传参数的时候,url的参数名字只能和参数名一样。
访问方式如下:
localhost:8080/getTest/noAnnotationTest?userIdList=123,123
2. 用@RequestParam
用的代码
1.1. 如果用了,如下:
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam List<String> userIdList){
return userIdList;
}
那么你必须传参数,而且参数的key值一定要是userIdList
访问就应该如下访问:
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. 那么我不想参数的key是userIdList怎么办呢,下面就能修改传入参数的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 那如果我不想传参数,但是我又不想传入的值为空,那么可以像如下的方式:
@RequestMapping("/listRaramTest")
public List<String> listRaramTest(@RequestParam(defaultValue = "456,456") List<String> userIdList){
return userIdList;
}
这样就算像如下的方式访问也不会传入的值为null
localhost:8080/getTest/listRaramTest
最后的强调
不加注解只能接收url参数
加了@RequestParam后即能接收url的参数,也能接收form-data参数,但是只支持Content-Type: 为 application/x-www-form-urlencoded的参数传入
网友评论