SpringBoot2.X 实战2 - 参数绑定

一.前言

简单点说就接口调用方传入的参数怎么到达 Controller 的方法中。本文以 GET 和 POST 为例,演示9种参数绑定方法。

二.正文

1.@RequestParam 注解,一般用在 GET 请求方法,注解指出方法参数应该绑定到web请求参数。
请求示例:URL: http://127.0.0.1:8080/test1?name=shao&pass=dong
代码

    @GetMapping("test1")
    public User01 test01(@RequestParam String name, @RequestParam String pass) {
        User01 user01 = new User01();
        user01.setUsername(name);
        user01.setPassword(pass);
        return user01;
    }

name 和 pass 会自动绑定到相应的字段。

2.分页信息绑定。
分页信息包括如下三个字段
a.page=>显示第几页(从0开始);
b.size=>每页显示的数据的行数;
c.sort=>按照哪个字段,按照哪种类型来排序
一般用在 SpringDataJPA 中,用于获取按照分页去获取数据。
请求示例:URL: http://127.0.0.1:8080/test2?name=shao&pass=dong&page=10&size=2&sort=time,desc

    @GetMapping("test2")
    public User01 test02(@RequestParam String name, @RequestParam String pass, Pageable pageable) {
        User01 user01 = new User01();
        user01.setUsername(name);
        user01.setPassword(pass);
        return user01;
    }

3.请求的对象字段在 URL 中绑定
请求的 URL: http://127.0.0.1:8080/test3?username=shao&password=dong&page=10&size=2&sort=time,desc

实体类字段

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User01 {

    @NotNull(message = "username 不能为空")
    private String username;

    @NotNull(message = "password 不能为空")
    private String password;

}

接口字段

    @GetMapping("test3")
    public User01 test03(User01 user01, Pageable pageable) {
        System.out.println("page:" + pageable.getPageNumber());
        System.out.println("size:" + pageable.getPageSize());
        System.out.println("sort:" + pageable.getSort());
        return user01;
    }

4.请求对象放在请求 body 中
使用 PostMan请求:


SpringBoot2.X 实战2 - 参数绑定_第1张图片
屏幕快照 2018-08-18 下午4.57.49.png

实例代码

    @PostMapping("/test11")
    public String test11(@RequestBody @Valid User01 user01, BindingResult result) {
        System.out.println(user01);
        if (result.hasErrors()) {
            System.out.println(result.getAllErrors());
        }
        return user01.toString();
    }

5.请求体中的 JSON 数据绑定到 Map中(不推荐)
该种方法会把所有的 JSON 数据以 K-V 形式存储到 map 中,但是字段信息会不清晰最好不好使用

    @PostMapping("/test13")
    public String test13(@RequestBody Map map) {
        System.out.println(map);
        return map.toString();
    }

三.代码路径

https://github.com/shaopro/SpringBootMultiParam

你可能感兴趣的:(SpringBoot2.X 实战2 - 参数绑定)