Swagger 学习笔记

简介: Swagger 学习笔记

Swagger笔记

1、Swagger简介

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。

  • 支持在线同步API文档,不用手动编写API文档。
  • 支持Web页面的在线测试APISwagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

swagger官网:https://swagger.io/

2、Swagger使用步骤

  1. 导入依赖

<dependency>

   <groupId>com.spring4all</groupId>

   <artifactId>swagger-spring-boot-starter</artifactId>

   <version>1.7.1.RELEASE</version>

</dependency>

  1. 配置swagger

@Configuration

@EnableSwagger2  // 开启swagger

publicclassSwaggerConfig {

   

   // 这样就可以使用swagger的默认配置

}

  1. 测试:访问localhost:8080/swagger-ui.html就可以访问默认的页面

3、Swagger配置信息

// 配置Docket的相关信息

@Bean

publicDocketgetDocket(){

 

 

   // 文档类型设置为DocumentationType.SWAGGER_2

   returnnewDocket(DocumentationType.SWAGGER_2)

           // 设置对应的swagger的api信息,参数是一个Contact对象

           // 默认是ApiInfo实体类

           .apiInfo(this.getApiInfo());

}

/*

默认的信息

static {

   DEFAULT = new ApiInfo("Api Documentation",

   "Api Documentation", "1.0", "urn:tos",

   DEFAULT_CONTACT, "Apache 2.0",

   "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());

}

*/

privateApiInfogetApiInfo(){

   // 文档的作者信息

   Contactcontact=newContact("xiaotanke", "http://www.yujiangg.com", "LHJ160414@163.com");

   returnnewApiInfo(

           // 题目

           "测试的Swagger文档",

           // 描述

           "这是一个测试api文档",

           // 版本

           "v-1.0",

           // 作者网站

           "http://www.yujiangg.com",

           // 作者的个人信息

           contact,

           // 开源信息

           "Apache 2.0",

           "http://www.apache.org/licenses/LICENSE-2.0",

           newArrayList()

   );

}

4、Swagger配置扫描

swagger默认是扫描项目的全部接口,即扫描项目中的所有controller中的接口,但是我们可以自定义扫描接口。

// 配置Docket的相关信息

   @Bean

   publicDocketgetDocket(){

 

 

       // 文档类型设置为DocumentationType.SWAGGER_2

       returnnewDocket(DocumentationType.SWAGGER_2)

               // 设置对应的swagger的api信息,参数是一个Contact对象

               // 默认是ApiInfo实体类

               .apiInfo(this.getApiInfo())

               // 自定义扫描接口,select()和build()是联合使用的,只能在之间配置

               // 两种方式,选择一种

               .select()

               // apis配置扫描接口范围

               /*

                   basePackage(): 扫描指定包下的接口

                   any(): 全部扫描,默认全部扫描

                   none(): 全都不扫描

                   withMethodAnnotation(): 扫描方法上有指定注解的接口,参数是指定注解的class对象

                   RequestHandlerSelectors(): 扫描类上有指定注解的接口,参数是指定注解的class对象

                */

//                .apis(RequestHandlerSelectors.basePackage("com.xiaotanke.controller"))

               .apis(RequestHandlerSelectors.any())

//                .apis(RequestHandlerSelectors.none())

//                .apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))

//                .apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))

               // 扫描过滤请求下的接口

               /*

                   ant(): 添加一个过滤请求,扫描这下面的接口

                   any(): 全部扫描

                   none(): 全都不扫描

                   regex(): 扫描满足指定正则的接口

                */

//                .paths(PathSelectors.ant("/admin/**"))

//                .paths(PathSelectors.any())

//                .paths(PathSelectors.none())

               .paths(PathSelectors.regex("正则字符串"))

               .build();

   }

5、Swagger其他配置

  1. 配置swagger启动

// 配置是否启动,默认是true启动,false不启用

.enable(false)

配置了这个就会出现下面的情况:

应用:将swagger配置成在生产环境中使用,但是上线环境不启动。

  1. 使用多环境配置,配置dev(开发)test(测试)pro(线上)三种环境。
  2. 获取项目环境,根据环境判断是否开启swagger。

// 配置Docket的相关信息

   @Bean

   publicDocketgetDocket(Environmentenvironment){

       // 环境

       Profilesprofiles=Profiles.of("dev","test");

       // acceptsProfiles() 监听项目的环境,参数是Profiles对象,如果存在上面指定的环境名称,就返回true,反之false

       booleanflag=environment.acceptsProfiles(profiles);

 

       // 文档类型设置为DocumentationType.SWAGGER_2

       returnnewDocket(DocumentationType.SWAGGER_2)

               // 设置对应的swagger的api信息,参数是一个Contact对象

               // 默认是ApiInfo实体类

               .apiInfo(this.getApiInfo())

               // 配置是否启动,默认是true启动,false不启用

               // 将flag的值作为参数传入,如果是dev或test环境就开启swagger

               .enable(flag)

               // 自定义扫描接口,select()和build()是联合使用的,只能在之间配置

               // 两种方式,选择一种

               .select()

               // apis配置扫描接口范围

               /*

                   basePackage(): 扫描指定包下的接口

                   any(): 全部扫描,默认全部扫描

                   none(): 全都不扫描

                   withMethodAnnotation(): 扫描方法上有指定注解的接口,参数是指定注解的class对象

                   RequestHandlerSelectors(): 扫描类上有指定注解的接口,参数是指定注解的class对象

                */

//                .apis(RequestHandlerSelectors.basePackage("com.xiaotanke.controller"))

               .apis(RequestHandlerSelectors.any())

//                .apis(RequestHandlerSelectors.none())

//                .apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))

//                .apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))

               // 扫描过滤请求下的接口

               /*

                   ant(): 添加一个过滤请求,扫描这下面的接口

                   any(): 全部扫描

                   none(): 全都不扫描

                   regex(): 扫描满足指定正则的接口

                */

//                .paths(PathSelectors.ant("/admin/**"))

//                .paths(PathSelectors.any())

//                .paths(PathSelectors.none())

//                .paths(PathSelectors.regex("正则字符串"))

               .build();

   }

6、Swagger分组配置

根据API文档生成多个分组,每个组对应自己的文档。多个组实际就是多个Docket对象,每一个Docket对象就是一个组。

// 组名为B

@Bean

publicDocketgetBDocket(){

   returnnewDocket(DocumentationType.SWAGGER_2)

           // 组名

           .groupName("B");

}

// 组名为C

@Bean

publicDocketgetCDocket(){

   returnnewDocket(DocumentationType.SWAGGER_2)

           .groupName("C");

}

// 组名为D

@Bean

publicDocketgetDDocket(){

   returnnewDocket(DocumentationType.SWAGGER_2)

           .groupName("D");

}

7、Swagger注解配置

  1. 实体类注解

当扫描的接口其中一个返回了一个实体对象,那么在swaggermodel中就会有对应实体的内容。

// lombok注解

@Data

@AllArgsConstructor

@NoArgsConstructor

// swagger实体的注释,会在swagger中显示

@ApiModel("用户实体类")

publicclassUser {

   // 实体类的字段注释

   @ApiModelProperty("自然主键")

   privateIntegerid;

   @ApiModelProperty("用户名")

   privateStringuserName;

   @ApiModelProperty("用户密码")

   privateStringpassword;

}

  1. 接口注释

@Controller

publicclassLoginController {

 

 

   // @ApiOperation 作用于方法上,注释某一个接口

   // @ApiParam 作用于参数,用作参数的注释

   @ApiOperation("测试接口")

   @GetMapping("/test1")

   publicStringtest1(@ApiParam("用户名参数") Stringusername){

       returnusername;

   }

}

  1. 接口测试

注释注解在作用上就是一个文档的说明,没有实际 上的作用。增强文档的可读性,也便于测试接口。

最近发现除了腾讯云和阿里云之外的一种好用的云服务器,那就是三丰云云服务器,它拥有众多的功能,其中一个就是可以免费试用一款云服务器,下面介绍它的使用方式。

官方地址:https://www.sanfengyun.com/

image-20230307102210797

然后进行一个实名认证和微信的绑定就可以申请一个 1c1g的免费服务器。

image-20230307102330457

三丰云是北京太极三丰云计算有限公司旗下网络服务品牌,十八年IDC老兵团队蛰伏三年后投资千万于2018年10月1日创建。公司致力于为大众提供优质的互联网基础服务和物联网服务,包括:域名注册、虚拟主机、云服务器、主机托管租用、CDN网站加速、物联网应用等服务。以帮助客户轻松、 高速、高效的应用互联网/物联网,提高企业竞争能力。,它拥有众多的功能,其中一个就是可以免费试用一款云服务器,下面介绍它的使用方式。

官方地址:https://www.sanfengyun.com/


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
Java API Spring
Swagger UI 2.0和3.0学习笔记
Swagger UI 2.0和3.0学习笔记
|
运维 监控 安全
Spring Boot2.5 实战:安全、Swagger、监控与 Docer 容器|学习笔记(二)
快速学习 Spring Boot2.5 实战:安全、Swagger、监控与 Docer 容器
Spring Boot2.5 实战:安全、Swagger、监控与 Docer 容器|学习笔记(二)
|
前端开发 Java 测试技术
8.Spring Boot2.5 实战 API 帮助文档 Swagger1|学习笔记
快速学习8.Spring Boot2.5 实战 API 帮助文档 Swagger1。
209 0
8.Spring Boot2.5 实战 API 帮助文档 Swagger1|学习笔记
|
数据可视化 Java API
后台项目管理模块-整合 swagger | 学习笔记
快速学习后台项目管理模块-整合 swagger
|
Java 程序员 API
Swagger2学习笔记
Swagger2学习笔记
205 0
|
25天前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
35 4
|
5月前
|
数据可视化 Java API
Spring Boot与Swagger的集成
Spring Boot与Swagger的集成
|
5月前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
76 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
197 1