`

Swagger接口注解及表单校验、分组校验

阅读更多
先讲解以下几个关键点

表单校验的关键在于注解:@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 {
    }
}



分享到:
评论

相关推荐

    Swagger常用注解使用说明

    Swagger常用注解的使用在API文档的自动生成过程中扮演着重要的角色,能够帮助开发人员在编写代码的同时,同步生成清晰、详细的API文档,有效提升开发效率与维护性。 1. @Api注解:这个注解用于标注在控制器...

    springBoog和Swagger2使用的接口注解

    ### Spring Boot与Swagger2接口注解详解 #### 一、概览 在现代软件开发过程中,尤其是基于微服务架构的应用程序开发中,清晰且规范化的API文档变得尤为重要。Spring Boot结合Swagger2为开发者提供了一种简便高效的...

    swagger接口文档改良添加左侧菜单.rar

    Swagger接口文档改良添加左侧菜单是针对API开发过程中的一个重要优化,旨在提高开发人员对API文档的使用效率。Swagger是一款流行的RESTful API文档工具,它能够自动生成、描述、测试和发现Web服务接口。通过在...

    idea生成swagger注解插件,最新版23.2也能用

    根据字段上的doc注释生成swagger注解 @ApiModelProperty(value = "当前登录人名称") 快捷键 ctrl+n \command+n \右键Generate 打开generate页面,选择swagger

    swagger 接口文档注释

    Swagger 提供了一种标准化的方式来注释 API,使得这些接口可以通过 Swagger UI 直观地展示出来,便于测试和调试。 Swagger 注释通常使用 OpenAPI 规范(以前称为 Swagger 规范)来编写,它是一种 YAML 或 JSON 格式...

    idea配置数据库,反向生成实体类demo,支持lombok,swagger2注解

    idea配置数据库,反向生成实体类demo,支持lombok,swagger2注解

    swagger接口管理框架

    在使用Swagger时,开发者通常会在控制器方法上使用`@ApiOperation`注解来描述接口的功能,`@ApiParam`注解来定义请求参数,`@ApiResponse`注解来定义可能的响应状态码和返回内容。此外,还可以使用`@Api`和`@...

    Swagger接口导出Word.rar

    本教程将围绕如何使用C#和.NET来通过Swagger将接口导出为Word文档进行详解。 首先,你需要在你的项目中引入Swagger。可以通过NuGet包管理器安装`Swashbuckle.AspNetCore`,这将为你的ASP.NET Web API项目添加...

    swagger实现接口搜索功能

    功能强大的Swagger,可以通过注解扫描或包体扫描自动生成API文档,可以进行在线文档调试。但是当api接口文档很多时,是不是觉得查找很不方便,官网也没有提供这样的方法,这里修改了swagger的源码,实现了接口搜索的...

    swagger接口日志生成工具

    Swagger接口日志生成工具是一款专为PHP开发设计的实用辅助工具,它可以帮助开发者方便地记录和管理Swagger定义的API接口的执行情况。Swagger是一个流行的开源框架,用于构建、文档化和交互式RESTful API,而这款日志...

    Swagger 常用注解说明.docx

    Swagger 是一个强大的 RESTful API 文档化工具,它允许开发者通过在 Java 代码中添加注解来生成 API 文档,从而提高开发效率和接口的可维护性。在 Java 中,Swagger 的核心注解主要包括以下几个: 1. **@Api**: 这...

    Swagger API接口创建

    ### Swagger API接口创建 #### 前言 Swagger是一款RESTful接口文档自动生成与功能测试工具,它能够帮助开发者高效地管理和维护API接口。本文旨在介绍如何在项目中集成Swagger,并解决一些常见的问题。Swagger的...

    swagger静态部分文件打包

    Swagger 是一个广泛使用的 API 设计和开发工具,它允许开发者以 YAML 或 JSON 格式定义 RESTful 风格的 Web 服务接口。这个压缩包文件 "swagger" 可能包含了 Swagger 的静态资源,这些资源主要用于展示和测试 API ...

    swagger返回数据注解.zip

    这个压缩包文件“swagger返回数据注解.zip”很可能包含了如何使用 Swagger 注解来定义和展示 API 返回的数据的相关资料。 Swagger 注解主要用在 Java 类和方法上,以便在 Swagger 文档中生成相应的描述。以下是一些...

    python处理swagger接口思路(1).xmind

    python处理swagger接口思路(1).xmind

    swagger接口设计.docx

    Swagger 是一个流行的API文档生成和测试工具,它允许开发者通过注解轻松地在Java代码中定义RESTful API接口,然后自动生成对应的文档。Swagger接口设计是软件开发过程中的一个重要环节,确保了API的清晰性和易用性。...

    springboot集成swagger实现接口管理源码

    Swagger还提供了丰富的注解,如`@ApiModel`和`@ApiModelProperty`用于模型属性的描述,`@ApiIgnore`用于忽略某些不希望展示的接口,以及`@ApiResponse`用于定义返回结果的HTTP状态码及响应信息。 集成完成后,可以...

    springboot swagger2注解使用的教程

    Spring Boot Swagger2 注解使用教程 本文主要介绍了 Spring Boot 项目中使用 Swagger2 的注解,详细讲解了每个注解的作用和使用方法,对大家的学习或工作具有一定的参考借鉴价值。 @Api 注解 @Api 注解用在请求的...

    Swagger接口导出Word文档

    1. **配置Swagger**: 首先,你需要在你的项目中集成Swagger,通过注解或其他方式配置你的API接口。Swagger会根据这些配置自动生成一个交互式的API文档,展示所有的HTTP操作、路径、参数、模型等。 2. **Swagger UI*...

Global site tag (gtag.js) - Google Analytics