上一篇文章介绍了 Controller 如何接收通过 GET 方式传递过来的参数,这篇文章介绍一下何接收通过 POST 方式传递过来的参数。
本篇文章为了方便 使用 Postman 进行 POST 请求 的测试
一、接收 Form 表单数据
1、基本的接收方法
(1)创建 Controller 接收 form-data 格式的 POST 数据,如下所示:
@RestController
public class BookController {
@PostMapping("/add")
public String save(@RequestParam("name") String name,
@RequestParam("author") String author){
System.out.println("书名:" + name + ", 作者: " + author);
return "书名:" + name + ", 作者: " + author;
}
}
(2)、测试结果:
说明:
- 使用 required = false 标注参数是非必须的。
- 使用 defaultValue 给参数指定个默认值。
2、使用 map 来接收参数
(1)用 map 接收 Controller 直接接收所有的请求参数:
@RestController
public class BookController {
@PostMapping("/add")
public String save(@RequestParam Map<String, Object> map){
System.out.println("书名:" + map.get("name") + ", 作者: " + map.get("author"));
return "书名:" + map.get("name") + ", 作者: " + map.get("author");
}
}
(2)、重启服务测试
3、使用数组或List接收多个参数
(1)创建 Controller 如下所示:
@RestController
public class BookController {
@PostMapping("/many")
public String many(@RequestParam String[] names){
return Arrays.toString(names);
}
}
(2)、重启测试
4、使用对象来接收参数
(1)、创建一个实体类 Book。
public class Book {
private String name;
private String author;
// 省略 getter setter 方法
}
(2)、定义 Controller
@RestController
public class BookController {
@PostMapping("/add")
public String save(Book book){
System.out.println("书名:" + book.getName() + ", 作者: " + book.getAuthor());
return "书名:" + book.getName() + ", 作者: " + book.getAuthor();
}
}
(3)、运行测试
二、接收 JSON 数据
在前后端分离项目中,一般是通JSON格式进行数据的传输,通过JSON 发送POST数据的格式很简单,只需要把 form 接收数据时 Controller 中的方法参数钱加上一个 @Requestbody 注解接口。如下所示:
(1)、Controller 示例:
@RestController
public class BookController {
@PostMapping("/add")
public String save(@RequestBody Book book){
System.out.println("书名:" + book.getName() + ", 作者: " + book.getAuthor());
return "书名:" + book.getName() + ", 作者: " + book.getAuthor();
}
}
(2)、运行测试: