参数接收方式
1、@RequestBody(请求体)
通常用于接收JSON或XML格式的数据。
使用该注解时,SpringBoot会自动将请求体中的数据转换为方法参数所需的对象类型。这个转换过程是通过消息转换器(Message Converter)来完成的,根据请求的Content-Type头部信息选择合适的消息转换器进行数据的解析和转换。
举例:
使用对象作为参数
前端JSON请求参数:
{ "userId":"", "userName":"" }
后端:
@PostMapping("/users") public User createUser(@RequestBody User user) { // 创建用户 // ... }
注意:为了能够确保将请求体中的数据转换为对象,需要确保请求的Content-Type头部信息正确设置为对应的格式(如 application/json 或 application/xml)。
@PostMapping("/users") public User createUser(@RequestBody(required = false) User user) { // 创建用户 // ... }
设置required参数为false,标识请求体可以为空,user参数为null。
使用数组作为参数
前端:
[1,2,3]
后端:
@PostMapping("/list") public User createUser(@RequestBody List<String> userId) { // 创建用户 // ... } @PostMapping("/list") public User createUser(@RequestBody String[] userId) { // 创建用户 // ... }
使用字符串等基础元素作为参数 前端:
[1,2]
后端:
@PostMapping("/list") public User createUser(@RequestBody String userId) { // 创建用户 // ... }
结果,后端如果是什么结构的数据,都会直接被转为sring。
{ "code": 200, "message": "[1,2]" }
2、@RequestParam
拼接在URL后面,多个参数使用&进行连接。
常见的请求方式为:
GET /user?id=123&name=John
controller层:
@GetMapping("/user")
public String getUser(@RequestParam("id") int userId, @RequestParam("name") String userName) {
// 根据用户ID和用户名获取用户信息
// ...
return "user";
}
数组请求方式:
GET /user?id=1,2,3
controller层:
@GetMapping("/user")
public String getUser(@RequestParam int id) {
// 根据用户ID和用户名获取用户信息
// ...
return "user";
}