SpringBoot - 获取 POST 请求参数详解

上一篇文章介绍了 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)、运行测试:

猜你喜欢

转载自blog.csdn.net/small_love/article/details/111806745