SpringBoot2.X 实战2 - 参数绑定
2018-08-13 本文已影响0人
聆世冷暖
一.前言
简单点说就接口调用方传入的参数怎么到达 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请求:

实例代码
@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<String, Object> map) {
System.out.println(map);
return map.toString();
}