在属性上面添加下列注解验证参数:
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
/**
* @author zxl
*/
@Data
@ApiModel(value = "创建用户请求对象")
public class CreateSysUserTestRequestVO {
@NotBlank(message = "用户名不能为空字符串")
@ApiModelProperty(value = "用户名")
private String username;
@NotBlank(message = "密码不能为空字符串")
@ApiModelProperty(value = "用户密码")
private String password;
@NotBlank(message = "真实姓名不能为空字符串")
@ApiModelProperty(value = "真实名称(蜂农姓名)")
private String realName;
@NotNull(message = "性别不能为空")
@Min(value = 0, message = "不能小于0")
@Max(value = 1, message = "不能大于1")
@ApiModelProperty(value = "性别(1.男 0.女)")
private Integer sex;
@NotBlank(message = "手机号码不能为空字符串")
@Pattern(regexp = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$",
message = "用户手机号不合法")
@ApiModelProperty(value = "手机号码(唯一)")
private String phone;
@NotBlank(message = "真邮箱不能为空字符串")
@ApiModelProperty(value = "邮箱(唯一)")
private String email;
}
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
/**
* 全局异常处理
*
* @author zxl
* @date 2021/04/20 11:
**/
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 统一处理参数校验错误异常 请求参数验证失败后返回参数组装
*
* @param response
* @param e
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public ResponseVO<?> processValidException(HttpServletResponse response, MethodArgumentNotValidException e) {
response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
// 1、获取所有参数效验集合;2、获取所有异常信息;3、获取第一条异常信息;4、获取异常信息描述
ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
String errorMessage = objectError.getDefaultMessage();
String objectName = objectError.getObjectName();
// 设置响应编码集
response.setContentType("application/json;charset=UTF-8");
// 记录错误信息
log.error(objectName + "_" + errorMessage);
// 返回组装响应对象
return ResponseVO.create(500, errorMessage);
}
}
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* @param <T>
* @author zxl
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseVO<T> implements Serializable {
private static final long serialVersionUID = -82374145256685304L;
private Integer status;
private String message;
private T data;
public ResponseVO() {
}
ResponseVO(int code, String desc, T data) {
this.status = code;
this.message = desc;
this.data = data;
}
ResponseVO(int code, String desc) {
this.status = code;
this.message = desc;
}
public int getStatus() {
return status;
}
public String getMessage() {
return message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@JsonIgnore
public boolean isSuccess() {
return this.status == 200;
}
public static <T> ResponseVO<T> create(int code, String desc, T data) {
return new ResponseVO<T>(code, desc, data);
}
public static <T> ResponseVO<T> create(int code, String desc) {
return new ResponseVO<T>(code, desc, null);
}
public static <T> ResponseVO<T> createOK() {
return new ResponseVO<T>(2, "请求成功!", null);
}
public static <T> ResponseVO<T> createOK(T data) {
return new ResponseVO<T>(1, "请求成功!", data);
}
public static <T> ResponseVO<T> createOKMSG(String desc) {
return new ResponseVO<T>(1, desc);
}
}
验证参数前增加:@Validated
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
*
* @author zxl
**/
@Api(tags = "测试接口")
@RestController
@RequestMapping("/api/sys/user")
public class SysUserController {
@ApiOperation(value = "测试注解验证")
@PostMapping("/test")
public ResponseVO<?> testAnn(@Validated @RequestBody CreateSysUserTestRequestVO p, HttpServletRequest request) {
System.out.println(p);
return ResponseVO.createOK();
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务