首先接口定义风格可以参考restful规范,即请求方式符合语义。
下面介绍下不同请求方式的请求参数校验。
- GetMapping
- 请求参数少于3个及以下时,可以用@RequestParam接收,在类上增加@Validated注解, 请求参数那里进行参数校验即可;
示例:查询用户
@RestController
@Validated
public class Demo{
@GetMapping(value="/api/user")
public List<User> getUser(@RequestParam(value="name") @NotEmpty String name){
}
}
这样写是因为requestParam 虽然默认是非空,但是如果不加校验是可以传""过来的,这个时候只增加@NotEmpty是不会生效的,需要在类上注解@Validated
- 请求参数大于3个时,可以采用对象接收
示例:查询用户
@RestController
public class Demo{
@GetMapping(value="/api/user")
public List<User> getUser(@Valid UserReq userReq){
}
}
@Data
public class UserReq{
@NotEmpty
private String name;
private String address;
}
这个时候在对象前加@Valid就行了
- PostMapping
请求参数用@RequestBody接收,加上@Valid注解
示例:添加用户
@RestController
public class Demo{
@PostMapping(value="/api/user")
public void addUser(@Valid @RequestBody UserReq userReq){
}
}
@Data
public class UserReq{
@NotEmpty
private String name;
private String address;
}
综上,以上几种方式校验参数,还可以定义全局异常处理,针对上面几种抛出来的异常定义统一的返回码,比如参数不合法。