知识改变命运,撸码使我快乐,你的发迹线还好吗?<br/>
点赞再看,养成习惯<br/>
本篇文章对应源码码云(Gitee)仓库<br/>
https://gitee.com/minbox-projects/api-boot-chapter ,您的Star是给我最大动力
接口文档在前后分离的项目中是必不可少的一部分,文档的编写一直以来都是一件头疼的事情,写程序 不写注释
、 不写文档
这几乎是程序员的通病, Swagger2
的产生给广大的程序员们带来了曙光,只需要在接口类或者接口的方法上添加注解配置,就可以实现文档效果,除了可以应用到 单体应用
,在 微服务架构中
也是可以使用的,只需要整合 zuul
就可以实现各个服务的文档整合。
<!--more-->
本文所需ApiBoot相关链接:
ApiBoot Swagger
内部封装了 Swagger2
,只需要一个注解 @EnableApiBootSwagger
就可以实现集成,使用起来非常简单。
ApiBoot Swagger
提供了一系列的默认配置,比如: 文档标题
、 文档描述
、 文档版本号
等,如果需要修改文档的默认配置,只需要在 application.yml
文件内对应配置参数即可实现自定义,告别了繁琐的代码配置, ApiBoot
通过自动化配置的方式来实现这一点,可以查看 ApiBootSwaggerAutoConfiguration 配置类源码了解详情。
ApiBoot Swagger
支持在线调试集成 OAuth2
的接口,只需要在文档界面通过 "Authorize"
按钮设置有效的 AccessToken
即可。
ApiBoot Swagger
之所以可以只需要一个注解就可以实现 Swagger2
的集成,其中难免有很多的配置参数在做支持,了解每一个配置参数的作用,我们才能进行心应手的自定义调整。
参数名 | 默认值 | 描述 |
---|---|---|
api.boot.swagger.enable | true | 是否启用文档 |
api.boot.swagger.title | ApiBoot快速集成Swagger文档 | 文档标题 |
api.boot.swagger.description | - | 文档描述 |
api.boot.swagger.base-package | SpringBoot默认package,详见 AutoConfigurationPackages |
生成文档的基础package |
api.boot.swagger.version | ApiBoot的版本号 | 文档版本号 |
api.boot.swagger.authorization.name | 授权名称 | |
api.boot.swagger.authorization.key-name | Authorization | 整合Oauth2后AccessToken在Header内的Name |
<hr/>
上面是常用的参数,更多配置参数详见官方文档: http://apiboot.minbox.io/zh-cn/docs/api-boot-swagger.html
我们先来创建一个 SpringBoot
应用程序,在项目的 pom.xml
文件内添加 ApiBoot
的相关依赖,如下所示:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-starter-swagger</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
通过 @EnableApiBootSwagger
注解来启用 ApiBoot Swagger
,该注解可以配置在 XxxApplication
入口类上,也可以配置在被 @Configuration
注解修饰的配置类上。
@SpringBootApplication @EnableApiBootSwagger public class ApibootSwaggerDescribeTheInterfaceApplication { public static void main(String[] args) { SpringApplication.run(ApibootSwaggerDescribeTheInterfaceApplication.class, args); } }
ApiBoot Swagger
所提供的 配置参数 都可以在 application.yml
文件内进行设置或修改默认值,下面是修改了 版本号
、 标题
的配置:
# ApiBoot相关配置 api: boot: swagger: # 配置文档标题 title: 接口文档 # 配置文档版本 version: v1.0
为了方便演示 Swagger
文档的强大之处,我们来创建一个测试的控制器,使用 Swagger
提供的注解来描述测试接口,如下所示:
/** * 示例控制器 * * @author 恒宇少年 */ @RestController @RequestMapping(value = "/user") @Api(tags = "用户控制器") public class UserController { /** * 示例: * 根据用户名查询用户基本信息 * * @param name {@link UserResponse#getName()} * @return {@link UserResponse} */ @GetMapping(value = "/{name}") @ApiOperation(value = "查询用户信息", response = UserResponse.class) @ApiResponse(code = 200, message = "success", response = UserResponse.class) public UserResponse getUser(@PathVariable("name") String name) { return new UserResponse(name, 25); } /** * 响应实体示例 */ @ApiModel @Data @AllArgsConstructor @NoArgsConstructor public static class UserResponse { @ApiModelProperty(value = "用户名") private String name; @ApiModelProperty(value = "年龄") private Integer age; } }
注意: ApiBoot Swagger
只是针对 Swagger
进行了封装,实现了快速集成,对内部的注解以及配置不做修改。
启动本章项目源码,访问: http://localhost:8080/swagger-ui.html 查看运行效果,如下图所示:
当我们点击 "用户控制器" 时可以展开该 Controller
内定义的接口列表,每一个接口都提供了 "Try it out"(在线调试)功能。
本章并没有集成 OAuth2
,在执行在线调试时并不需要配置 AccessToken
。
ApiBoot Swagger
的实现主要归功于 SpringBoot
自定义 Starter
,根据配置参数进行条件配置控制对象的实例化,通过 @Import
来导入 Swagger
所需要的配置类。
如果您喜欢本篇文章请为源码仓库点个 Star
,谢谢!!!
本篇文章示例源码可以通过以下途径获取,目录为 apiboot-swagger-describe-the-interface
:
作者个人 博客
使用开源框架 ApiBoot 助你成为Api接口服务架构师