通用Get
controller:
@Validated
@RestController
public class TestController {
private static final Logger logger = LoggerFactory.getLogger("Lo");
@GetMapping("/testGet")
public String testGet(@NotNull(message = "name不能为空") String name,String password){
logger.info("{} {}",name,password);
return "success";
}
}
通用Post
controller:
@PostMapping("/testVal")
public Req testVal(@RequestBody @Validated Req req){
return req;
}
Req:
public class Req {
@NotNull(message = "name!")
private String name;
@DecimalMax(value = "10",message = "not")
private Integer age;
@Valid
@NotNull
private InnerClass ic;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public InnerClass getIc() {
return ic;
}
public void setIc(InnerClass ic) {
this.ic = ic;
}
public static class InnerClass {
@Max(value = 10)
private Integer iage;
public Integer getIage() {
return iage;
}
public void setIage(Integer iage) {
this.iage = iage;
}
}
}
异常处理
ArgumentExceptionHandler:
@RestControllerAdvice
public class ArgumentExceptionHandler {
private static Logger logger = LoggerFactory.getLogger(ArgumentExceptionHandler.class);
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String postArgumentValidExceptionHandler(MethodArgumentNotValidException exception) {
logger.error("全局异常捕获");
exception.printStackTrace();
logger.error(exception.getMessage());
String errMsg = exception.getBindingResult().getAllErrors().get(0).getDefaultMessage();
return "参数错误:" + errMsg;
}
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String getArgumentValidExceptionHandler(ConstraintViolationException exception){
logger.error("全局异常捕获");
exception.printStackTrace();
String errMsg = exception.getConstraintViolations().iterator().next().getMessage();
return "参数错误:" + errMsg;
}
}
使用group
Req:
public class Req {
@NotNull(message = "name!",groups = Group1.class)
private String name;
controller:
@PostMapping("/testVal")
public Req testVal(@RequestBody @Validated({Group1.class}) Req req){
return req;
}