spring boot如何优雅的校验请求参数

首先接口定义风格可以参考restful规范,即请求方式符合语义。
下面介绍下不同请求方式的请求参数校验。

  1. 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就行了

  1. 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;
}

综上,以上几种方式校验参数,还可以定义全局异常处理,针对上面几种抛出来的异常定义统一的返回码,比如参数不合法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容