zoukankan      html  css  js  c++  java
  • Swagger2常用注解和使用方法

    一   引入maven依赖

        <!--整合Swagger2-->
            <dependency>
                <groupId>com.spring4all</groupId>
                <artifactId>swagger-spring-boot-starter</artifactId>
                <version>1.9.0.RELEASE</version>
            </dependency>
            <!--第一种swagger ui-->
       <!--  <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>swagger-bootstrap-ui</artifactId>
                <version>1.8.9</version>
            </dependency>-->
            <!--第二种swagger ui-->
           <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-spring-boot-starter</artifactId>
                <version> 1.9.6</version>
            </dependency>

    编写配置文件

    @Configuration
    @EnableSwagger2
    public class Swagger2 {
        @Bean
        public Docket customDocket() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .genericModelSubstitutes(DeferredResult.class)
                    .useDefaultResponseMessages(false)
                    .forCodeGeneration(false)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("JT天娱网络科技有限公司APi")
                    .description("文档描述")
                    .contact("ss")   // 联系方式
                    .version("1.1.0")  // 版本
                    .termsOfServiceUrl("http://localhost:8080/doc.html")
                    .description("本系统纯属虚构,如有雷同...")
                    .build();
        }
    }

    三 启动项目访问http://localhost:8080/doc.html或者http://localhost:8080/swagger-ui.html

    我这里访问的是http://localhost:8080/doc.html ps:访问这个url需要添加swagger-bootstrap-ui 依赖

    效果图如下:

     四 Swagger2常用注解介绍

    常用注解: 
    - @Api()用于类; 
    表示标识这个类是swagger的资源 
    - @ApiOperation()用于方法; 
    表示一个http请求的操作 
    - @ApiParam()用于方法,参数,字段说明; 
    表示对参数的添加元数据(说明或是否必填等) 
    - @ApiModel()用于类 
    表示对类进行说明,用于参数用实体类接收 
    - @ApiModelProperty()用于方法,字段 
    表示对model属性的说明或者数据操作更改 
    - @ApiIgnore()用于类,方法,方法参数 
    表示这个方法或者类被忽略 
    - @ApiImplicitParam() 用于方法 
    表示单独的请求参数 
    - @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam

    具体使用说明:

    用于类;表示标识这个类是swagger的资源 
    tags–表示说明 
    value–也是说明,可以使用tags替代 
    但是tags如果有多个值,会生成多个list

    @Api(value="用户controller",tags={"用户操作接口"})
    @RestController
    public class UserController {
    }

    @ApiOperation() 用于方法;表示一个http请求的操作 
    value用于方法描述 
    notes用于提示内容 
    tags可以重新分组(视情况而用) 
    @ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等) 
    name–参数名 
    value–参数说明 
    required–是否必填

    @Api(value="用户controller",tags={"用户操作接口"})
    @RestController
    public class UserController {
         @ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")
         @GetMapping("/getUserInfo")
         public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
         // userService可忽略,是业务逻辑
          User user = userService.getUserInfo();
          return user;
      }
    }

    @ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收 
    value–表示对象名 
    description–描述 
    都可省略 
    @ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 
    value–字段说明 
    name–重写属性名字 
    dataType–重写属性类型 
    required–是否必填 
    example–举例说明 
    hidden–隐藏

    @ApiModel(value="user对象",description="用户对象user")
    public class User implements Serializable{
        private static final long serialVersionUID = 1L;
         @ApiModelProperty(value="用户名",name="username",example="mctao")
         private String username;
         @ApiModelProperty(value="状态",name="state",required=true)
          private Integer state;
          private String password;
          private String nickName;
          private Integer isDeleted;
     
          @ApiModelProperty(value="id数组",hidden=true)
          private String[] ids;
          private List<String> idList;
         //省略get/set
    }
      @ApiOperation("更改用户信息")
      @PostMapping("/updateUserInfo")
      public int updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="传入json格式",required=true) User user){
     
         int num = userService.updateUserInfo(user);
         return num;
      }

    @ApiIgnore()用于类或者方法上,可以不被swagger显示在页面上 
    比较简单, 这里不做举例

    @ApiImplicitParam() 用于方法 
    表示单独的请求参数 
    @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam 
    name–参数ming 
    value–参数说明 
    dataType–数据类型 
    paramType–参数类型 
    example–举例说明

    @ApiOperation("查询测试")
      @GetMapping("select")
      //@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")
      @ApiImplicitParams({
      @ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="mctao"),
      @ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})
      public void select(){
      }

    此文章纯属学习笔记,如有什么不足之处请在下方留言,我一会竭力改进

  • 相关阅读:
    php判断是不是https的方法
    [Redis] Redis哨兵模式部署
    Transformer详解:各个特征维度分析推导
    Hell World:)
    cesiumjs
    UVA-11090 Going in Cycle!!
    判断两个数组是否相似 (arraysSimilar)
    Markdown 语法说明 (简体中文版)
    DjangoModels
    Lua 学习 chapter30 编写c函数的技巧
  • 原文地址:https://www.cnblogs.com/aikutao/p/11936842.html
Copyright © 2011-2022 走看看