先讲解以下几个关键点
表单校验的关键在于注解:@Validated
分组校验的关键在于 @Validated({UpdateGroup.User.class}) 校验规则有定义UpdateGroup.User.class 就会启用该校验规则
UpdateGroup 可以自行定义
表单校验信息捕获当然就是handleMethodArgumentNotValidException 中的代码来处理了 这里可以根据实际情况就行修改
Swagger的两个关键注解 @Api @ApiOperation
废话不多说 直接上代码
//表单校验 抛出异常信息
@RestControllerAdvice
public class RRExceptionHandler {
/**
* 自定义注解异常拦截
* @param e
* @param request
* @return
*/
@ExceptionHandler({BindException.class, ConstraintViolationException.class, MethodArgumentNotValidException.class})
public R handleMethodArgumentNotValidException(Exception e, HttpServletRequest request) {
// 错误信息
StringBuilder sb = new StringBuilder("参数校验失败:");
String msg = "";
if (!(e instanceof BindException) && !(e instanceof MethodArgumentNotValidException)) {
for (ConstraintViolation cv: ((ConstraintViolationException)e).getConstraintViolations()) {
msg = cv.getMessage();
sb.append(msg).append(";");
Iterator<Path.Node> it = cv.getPropertyPath().iterator();
Path.Node last = null;
while (it.hasNext()) {
last = (Path.Node)it.next();
}
}
} else {
List<ObjectError> allErrors = null;
if (e instanceof BindException) {
allErrors = ((BindException)e).getAllErrors();
} else {
allErrors = ((MethodArgumentNotValidException)e).getBindingResult().getAllErrors();
}
// 拼接错误信息
for (ObjectError oe : allErrors) {
msg = oe.getDefaultMessage();
sb.append(msg).append(";");
}
}
return R.error(sb.toString());
}
}
//controller 校验示例
@RestController
@RequestMapping("/user")
@Api(tags = "用户管理")
public class SysUserController {
/**
* 保存用户
*/
@PostMapping("/save")
@ApiOperation("添加用户")
public R save(@RequestBody @Valid AddUserForm form){
//业务逻辑处理
return R.ok();
}
/**
* 修改用户
*/
@PostMapping("/update")
@ApiOperation("修改用户")
public R update(@RequestBody @Validated({UpdateGroup.User.class}) UpdateUserForm form){
//业务逻辑处理
return R.ok();
}
}
//from表单
//新增表单
@Data
@ApiModel
public class AddUserForm {
* 用户名
*/
@NotBlank(message="用户名不能为空")
@ApiModelProperty(value = "用户名",required = true, groups = UpdateGroup.User.class
)
private String username;
/**
* 邮箱
*/
@Email(message="邮箱格式不正确")
@ApiModelProperty(value = "邮箱",required = true)
private String email;
/**
* 手机号
*/
@NotBlank(message="手机号不能为空")
@ApiModelProperty(value = "手机号",required = true)
private String phone;
/**
* 部门ID
*/
@NotNull(message="部门不能为空")
@ApiModelProperty(value = "部门ID",required = true)
private Long deptId;
}
//更新表单
@Data
@ApiModel
public class UpdateUserForm {
/**
* 用户名
*/
@NotBlank(message="用户名不能为空")
@ApiModelProperty(value = "用户名",required = true)
private String username;
/**
* 邮箱
*/
@Email(message="邮箱格式不正确")
@ApiModelProperty(value = "邮箱",required = true)
private String email;
/**
* 手机号
*/
@NotBlank(message="手机号不能为空")
@ApiModelProperty(value = "手机号",required = true)
private String phone;
/**
* 部门ID
*/
@NotNull(message="部门不能为空")
@ApiModelProperty(value = "部门ID",required = true)
private Long deptId;
}
/**
* 更新数据 Group
* 分组校验
*
*/
public interface UpdateGroup {
public interface User {
}
}
分享到:
相关推荐
springBoog和Swagger2使用的接口注解,自己整理的注解使用说明
swagger 用户已api文档自动生成,可以大幅提高客户端和服务端的开发人员的协作效率。本资源主要描述了swagger 注解的使用方法。
Swagger接口导出Word源码
微服务分布式架构实践,swagger 接口文档注释,下载即运行【代码完整】
根据字段上的doc注释生成swagger注解 @ApiModelProperty(value = "当前登录人名称") 快捷键 ctrl+n \command+n \右键Generate 打开generate页面,选择swagger
idea配置数据库,反向生成实体类demo,支持lombok,swagger2注解
swagger 常用注解学习总结
基于swagger文档,进行左侧菜单改造,添加左侧菜单,快速导航菜单接口,后台接口api目录用-分割,如: XX系统-XX管理-XX列表
功能强大的Swagger,可以通过注解扫描或包体扫描自动生成API文档,可以进行在线文档调试。但是当api接口文档很多时,是不是觉得查找很不方便,官网也没有提供这样的方法,这里修改了swagger的源码,实现了接口搜索的...
swagger是一个管理数据接口的框架,通过注解的方式、网页的形式自动帮我们生成接口相关的信息,相比以前文档的方式撰写的接口,swagger更加便捷、高效,省力。
Swagger配置及注解.docx
Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见参考资料。 Swagger 是一个规范和完整的框架...
python处理swagger接口思路(1).xmind
swagger接口日志生成工具:里面包含工具类、使用方法、配置方法
swagger静态部分文件打包,用于swagger的页面接口展示
主要介绍了springboot swagger2注解使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本文整理了 spring boot + jpa+mysql+redis +swagger+yml等技术,实现了微服务restFul 风格的demo,下载即运行[http://localhost:8080/swagger-ui.html 进行文档展示] [http://localhost:8080/user/ma 访问接口]
第五步:Swagger注解描述接口 3 Swagger3 常用配置注解讲解 3.1 Swagger3常用配置如下: 3.2 实例一 `@ApiImplicitParams` 和 `@ApiImplicitParam` 参数描述 3.3 实例二 `@ApiModel` , `@ApiModelProperty` 实体参数...
生成json文件,供swagger接口文档测试使用,可打开或关闭.swagger支持接口多版本分组管理.支持restful path路由参数校验.支持自定义响应体结构.支持自定义多层级swagger model.支持自定义前置动作.支持自定义拦截动作....
swagger接口设计.docx