前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot集成Swagger2生成接口文档,妈妈再也不用担心我写API文档了

SpringBoot集成Swagger2生成接口文档,妈妈再也不用担心我写API文档了

作者头像
做棵大树
发布2022-09-09 21:39:18
1.2K0
发布2022-09-09 21:39:18
举报
文章被收录于专栏:代码日志代码日志

在现在的开发过程中,基本已经全部采用API接口的方式进行系统的开发了,于是乎,在此过程中,一个好的 API 文档便成为了后台与前台进行沟通与开发的关键桥梁。

传统的做法是由开发人员创建一份 RESTful API 文档来记录所有的接口细节,说实话,这样的工作量并不小,而且十分琐碎,且随着项目的更新会出现以下问题。

  • 文档难以维护。
  • 接口内容更加复杂,编写效率更低。

Swagger 便是为了解决这一问题,它作为一个规范和完整的框架,可以用于生成、描述、调用和可视化 RESTful 风格的 Web 服务:通过Swagger,我们可以在开发接口的过程中通过使用注解自动生成/更新API接口文档,且在文档页面支持接口的调试。

接下来就简单说一下,如何在SpringBoot中集成Swagger2(2 代表其版本)

引入 Swagger2 依赖

pom.xml 文件

代码语言:javascript
复制
<dependencies>
        <!--Swagger2 在此,个人推荐使用 2.8.0 版本,较为稳定-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

</dependencies>
代码语言:javascript
复制

创建配置文件

Swagger2Config.java java 配置文件

代码语言:javascript
复制
@Configuration
// 指定扫描的 api 包路径
@ComponentScan(basePackages = {"cn.beatree.xxx.controller"})
//注解开启 swagger2 功能
@EnableSwagger2
public class Swagger2Config {


    @Value("${swagger2.enable}")
    boolean enable;
    // 配置文件中通过值注入控制生产环境与开发环境下的启用状态


    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enable)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("ANONVOTE | Swagger API文档")//标题
                .description("description: ANONVOTE | Swagger API文档")//描述
                .contact("BEATREE")//作者信息
                .version("1.0.0")//版本号
                .build();
    }


}

application.yml 配置文件

代码语言:javascript
复制
swagger2:
  enable: false #true 启用

@Configuration 注解,指定为配置类,会在SpringBoot启动时进行加载。

@EnableSwagger2 注解来启用Swagger2。

成员方法 createRestApi 函数创建 Docket 的 Bean 之后,apiInfo() 用来创建该 Api 的基本信息(这些基本信息会展现在文档页面中)。select() 函数返回一个 ApiSelectorBuilder 实例用来控制哪些接口暴露给 Swagger 来展现,本例采用指定扫描的包路径来定义,Swagger 会扫描该包下所有 Controller 定义的 API,并产生文档内容(除了被 @ApiIgnore 指定的请求)。

常用 Swagger 注解

  • @Api:修饰整个类,描述 Controller 的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP 响应其中 1 个描述
  • @ApiResponses:HTTP 响应整体描述
  • @ApiIgnore:使用该注解忽略这个 API
  • @ApiError :发生错误返回的信息
  • @ApiImplicitParam:描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值
  • @ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表

举个栗子

代码语言:javascript
复制
@RestController
@Transactional    // 事务注解,实现回滚
@RequestMapping("/api/tlink")
@Api(value = "/api/tlink", tags = "参与者相关接口")
public class TlinkController{




    @GetMapping("/checkCode/{code}")
    @ApiOperation(value = "投票认证码核验接口",
            notes = "该接口用于核验认证码合法性,对于投票主题内容的获取需后续调用 Topic 相关接口。返回值 data 中带有参数 topic & options")
    public JSONObject checkCode(@PathVariable("code") String code){
        ...
    }


}

最后在运行SpringBoot项目之后,通过 服务器地址/swagger-ui.html 访问即可。

需要注意的是,如已添加路径拦截器,需通过

代码语言:javascript
复制
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**")

对 swagger 路径放行。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-08,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 做棵大树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入 Swagger2 依赖
  • 创建配置文件
  • 常用 Swagger 注解
  • 举个栗子
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com