首页 > 其他分享 >Swagger信息配置与常用注解

Swagger信息配置与常用注解

时间:2023-12-23 22:35:17浏览次数:35  
标签:常用 name required value 注解 Swagger Docket public

转载自:https://blog.csdn.net/donglinjob/article/details/108550887

 Swagger信息配置与常用注解

一、 Swagger  配置

可以在项目中创建 SwaggerConfig,进行配置文档内容。

1 配置基本信息

Docket:摘要对象,通过对象配置描述文件的信息。

apiInfo:设置描述文件中 info。参数类型 ApiInfo

select():返回 ApiSelectorBuilder 对象,通过对象调用 build()可以

创建 Docket 对象

ApiInfoBuilder:ApiInfo 构建器。

  1.   @Configuration
  2.   public class SwaggerConfig {
  3.   @Bean
  4.   public Docket getDocket(){
  5.   return w new Docket(DocumentationType. SWAGGER_2 )
  6.   .apiInfo(swaggerDemoApiInfo())
  7.   .select()
  8.   .build();
  9.   }
  10.   private ApiInfo swaggerDemoApiInfo(){
  11.   return new ApiInfoBuilder().contact(w new Contact("北京尚学堂",  "http://www.bjsxt.com","[email protected]"))
  12.   //文档标题
  13.   .title("这里是Swagger的标题")
  14.   //文档描述
  15.   .description("这里是Swagger的描述")
  16.   //文档版本
  17.   .version( "1.0.0")
  18.   .build();
  19.   }
  20.   }

显示效果如下:

2 设置扫描的包

可以通过 apis()方法设置哪个包中内容被扫描

  1.   @Bean
  2.   public Docket getDocket() {
  3.   return new Docket(DocumentationType. SWAGGER_2 )
  4.   .apiInfo(getApiInfo())
  5.   .select()
  6.   .apis(RequestHandlerSelectors. basePackage ( "com.bjsxt.controller"))
  7.   .build();
  8.   }

3 自定义注解设置不需要生成接口文档的方法

3.1 自定义注解

注解名称随意。

  1.   @Target({ElementType.METHOD })
  2.   @Retention(RetentionPolicy.RUNTIME )
  3.   public @interface NotIncludeSwagger {
  4.   }

3.2 添加规则

通 过 public ApiSelectorBuilder apis(Predicate<RequestHandler> selector)可以设置生成规则。

public static <T> Predicate<T> not(Predicate<T> predicate) :表示不允许的条件。

withMethodAnnotation:表示此注解是方法级别注解。

  1.   @Bean
  2.   public Docket getDocket(){
  3.   return w new Docket(DocumentationType.SWAGGER_2 )
  4.   .apiInfo(swaggerDemoApiInfo())
  5.   .select()
  6.   .paths(allowPaths())
  7.   .apis( not ( ( withMethodAnnotation (NotIncludeSwagger.class)))
  8.   .build();
  9.   }

3.3 添加 NotIncludeSwagger  注解

在不需要生成接口文档的方法上面添加@NotIncludeSwagger 注解后,该方法将不会被 Swagger 进行生成在接口文档中。

  1.   @NotIncludeSwagger
  2.   @RequestMapping( "/getPeople2")
  3.   public People getPeople2(Integer id, String name, String address){
  4.   People peo = new People();
  5.   peo.setId(id);
  6.   peo.setName(name);
  7.   peo.setAddress(address);
  8.   return peo;
  9.   }

4 设置范围

通过 public ApiSelectorBuilder paths(Predicate<String> selector)可以设置满足什么样规则的 url 被生成接口文档。可以使用正则表达式进行匹配。

下面例子中表示只有以/demo/开头的 url 才能被 swagger 生成接口文档。

如何希望全部扫描可以使用 paths(PathSelectors.any())

  1.   @Bean
  2.   public Docket getDocket(){
  3.   return new Docket(DocumentationType.SWAGGER_2)
  4.   .apiInfo(swaggerDemoApiInfo())
  5.   .select()
  6.   .paths(allowPaths())
  7.   .build();
  8.   }
  9.   private Predicate<String>  allowPaths(){
  10.   return or ( (regex ("/demo/.*"));
  11.   }

二、 Swagger2  常用注解

1 Api

@Api 是类上注解。控制整个类生成接口信息的内容。

tags:类的名称。可以有多个值,多个值表示多个副本。

description:描述,已过时。

  1.   @RestController
  2.   @RequestMapping( "/people")
  3.   @Api(tags = { "mydemo"},description = "描述")
  4.   public class DemoController {

在 swagger-ui.html 中显示效果。

2 ApiOperation

@ApiOperation 写在方法上,对方法进行总体描述

  • value:接口描述
  • notes:提示信息

代码示例:

@ApiOperation(value="接口描述",notes = "接口提示信息")
 

在 swagger-ui 中显示效果

3 ApiParam

@ApiParam 写在方法参数前面。用于对参数进行描述或说明是否为必添项等说明。

name:参数名称

value:参数描述

required:是否是必须

public People getPeople(Integer id, @ApiParam(value=" " 姓名" ",required =  true) String name, String address)
 

swagger-ui 显示效果如下:

4 ApiModel

@ApiModel 是类上注解,主要应用 Model,也就是说这个注解一般都是写在实体类上。

  • value:名称
  • description:描述

代码示例:

  1.   @ApiModel(value = "人类",description = "描述")
  2.   public s class People {

swagger-ui.html 效果展示

5 ApiModelProperty

@ApiModelProperty 可以用在方法或属性上。用于当对象作为参数时定义这个字段的内容。

value:描述

name:重写属性名

required:是否是必须的

example:示例内容

hidden:是否隐藏。

代码示例:

  1.   @ApiModelProperty(value = "姓名",name =  "name",required =  true,example = "张三")
  2.   private String  name;

swagger-ui.html 效果展示

6 ApiIgnore

@ApiIgnore 用于方法或类或参数上,表示这个方法或类被忽略。和之前讲解的自定义注解@NotIncludeSwagger 效果类似。只是这个注解是 Swagger 内置的注解,而@NotIncludeSwagger 是我们自定义的注解。

7 ApiImplicitParam

@ApiImplicitParam 用在方法上,表示单独的请求参数,总体功能和@ApiParam 类似。

name:属性名

value:描述

required:是否是必须的

paramType:属性类型

dataType:数据类型

代码示例:

  1.   @PostMapping( "/getPeople")
  2.   @ApiImplicitParam(name="address",value="地址",required=true,paramType="query",dataType="string")
  3.   public People getPeople(Integer id, @ApiParam(value="姓名",required =  true) String
  4.   name, String address){

swagger-ui.html 效果展示

如果希望在方法上配置多个参数时,使用@ApiImplicitParams 进行配置。示例如下:

@ApiImplicitParams(value={@ApiImplicitParam(name= "id",value = "编号",required =true),@ApiImplicitParam(name= "name",value = "姓名",required =  true)})
 

 

 

标签:常用,name,required,value,注解,Swagger,Docket,public
From: https://www.cnblogs.com/wanghengbin/p/17923749.html

相关文章

  • 后端 API 接口文档 Swagger 使用指南
    后端API接口文档Swagger使用指南转载自:https://zhuanlan.zhihu.com/p/98560871前言一:swagger是什么?二:为什么要使用swaager?2.1:对于后端开发人员来说2.2:对于前端开发来说2.3:对于测试三:如何搭一个swagger3.1:引入swagger的依赖3.2:springBoot整合swagg......
  • Swagger(一) Swagger/Springfox 入门简介
    转载自:https://blog.csdn.net/donglinjob/article/details/108550636 Swagger/Springfox入门简介一、Swagger 简介1前言接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经......
  • RocketMQ的特性介绍和常用的业务场景
    RocketMQ(ApacheRocketMQ)是一个开源的分布式消息中间件系统,最初由阿里巴巴开发并捐赠给Apache软件基金会。它是一个可靠、可扩展、高吞吐量、低延迟的分布式消息系统,适用于大规模分布式系统中的消息通信。以下是RocketMQ的一些主要特性和常用场景:特性介绍:分布式架构:RocketMQ采用了......
  • 编译期注解开发指北
    前言可用于基于注解的工具类开发,主要用于代码生成及相关配套技术明星项目:Lombok示例项目:diy-lombok开发流程明确开发目标:代码生成只是一种中间手段,最终必然落到某个具体需求上,非必要不生成自定义注解开发自定义注解器开发Debug基于日志作为SDK集成到Spring项目......
  • cmd 运行 python 常用快捷键
    在Windows命令行下运行Python文件,你可以按照以下步骤操作¹:打开Windows下的terminal。快捷键是Win+R,然后在框中输入cmd并回车¹。使用cd命令和dir命令找到要编辑运行的Python文件。如果还未创建,可以使用typenul>*.py创建Python文件(*代指文件名)¹。编辑P......
  • Jackson Annotations(注解)详解
    转载自:https://blog.csdn.net/wjw465150/article/details/1273268491.概述在本教程中,我们将深入研究JacksonAnnotations。我们将了解如何使用现有的注解,如何创建自定义注解,最后,如何禁用它们。2.Jackson序列化注解首先,我们将看一下序列化注解。2.1.@JsonAnyGetter@J......
  • python不常用但有用的知识
    目录python解释器什么是python解释器什么是虚拟环境解释器?如何查看python解释器的位置?虚拟环境什么是虚拟环境?virtualenvironment虚拟环境和全局环境的关系有了虚拟环境是否可以删除全局环境?如何创建虚拟环境——方法1?(想看就看看,不看也没关系,反正也不用)......
  • Spring Boot之@Autowired注解使用区别,实战演示?
    ......
  • Java第十三课_常用时间类和集合
    1.常用时间类Calendar类publicstaticvoidmain(String[]args){//JDK1.1开始//Calendar类是一个抽象类,//它提供了在特定时刻和一组日历字段(如YEAR、MONTH、DAY_of_MONTH、HOUR等)之间进行转换的方法,以及操作日历字段(例如获取下一周的日期......
  • python之列表常用方法
    常用方法:函数名说明len(list)返回列表元素个数max(list)返回列表中元素最大值min(list)返回列表中元素最小值list(tup)将元组转换为列表list.append(obj)添加obj对象到列表的末尾list.count(obj)返回obj在列表中出现的次数list..extend(seq)在列表中添加指定序列(是序列,不单只列表),函......