请求的参数列表中注解使用
1. 无注解
1.1 普通参数
请求的变量名与参数名一致即可。
1.2 对象
定义User对象:User(String username,Integer age)。
当请求参数缺少、多余、与User属性名不一致时,user都会自动匹配与属性名一致的参数进行赋值,如下四张图:
当用JSON作为参数请求时,如下:获取的值为null
这时,我们需要一个注解 – @RequestBody
2. @RequestBody
如果参数时放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到。一般为POST请求,一个请求中只能出现一次@RequestBody注解。
@RequestBody中只有一个属性required,默认为true,表示该注解修饰的参数为空时会报异常。
3. @RequestParam
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或者形参前 什么也不写也能接收。如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。
4. @Valid与@Validated
都用于参数校验。
关键依赖:
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
</dependency>
要校验的实体类User:
import javax.validation.constraints.*;
/**
* @author wyp
*/
public class User {
@NotNull(message = "id不能为null")
@Min(message = "id值必须大于{value}",value = 0)
private Integer id;
@NotBlank(message = "username不能为空")
private String username;
private String text;
//省略get/set
}
请求:
@PostMapping("/user/add1")
public String add(@Valid User user) {
return "ok";
}
@PostMapping("/user/add2")
public String add(@Validated User user) {
return "ok";
}
javax.validation.Valid
org.springframework.validation.annotation.Validated
@Validated功能比@Valid注解强大,支持级联和递归校验。
5. @PathVariable
对应参数识别URL里面的一个模板。
@GetMapping("/user/get/{id}")
public String get(@PathVariable("id") Integer id) {
System.out.println(id);
return "ok";
}