当前位置 : 首页 » 文章分类 :  开发  »  Swagger

Swagger

Rest Api 文档自动生成工具 Swagger


SpringBoot中使用Swagger生成API文档

maven 引入 swagger 依赖

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

<dependency>
    <groupId>com.battcn</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.4.5-RELEASE</version>
</dependency>

springfox-swagger2 负责扫描所有 swagger 注解生成 json 格式的 api 文档
springfox-swagger-ui 根据 json 文档 生成 html 页面

@EnableSwagger2Doc

Application 类上加注解 @EnableSwagger2Doc 启用 swagger,这个注解是 swagger-spring-boot-starter 包提供的,内部包含自动配置类。

@Api controller类名 描述controller
@ApiOperation controller方法 描述接口方法
@ApiParam path 或 param参数 描述接口参数
@ApiImplicitParams, @ApiImplicitParam 参数增加说明。

@ApiModel 实体类名 描述实体
@ApiModelProperty 实体属性 描述属性

json数据地址和ui界面地址

启动项目后打开
http://localhost:8080/v2/api-docs
能看到 json 格式的接口描述

http://localhost:8080/swagger-ui.html
查看 ui 界面

Spring Boot中使用Swagger2构建强大的RESTful API文档 - 程序猿DD
http://blog.didispace.com/springbootswagger2/

java.lang.NumberFormatException: For input string: “”

对于标注了 @ApiModelProperty 的 Integer long 等字段, swagger 在给其生成默认值的时候,会读取 example 值,这个 example 默认是 空字符串,转为 整型 或 Long 型 时 Long.valueOf() Integer.valueOf() 方法会报错。加上数字默认值就行了。

@Data
@ApiModel(description = "接口返回")
public class ResponseDTO {
    @JsonProperty("rtn")
    @ApiModelProperty(value = "返回码", example = "200")
    private Integer rtn;

    @JsonProperty("message")
    @ApiModelProperty(value = "描述信息")
    private String message;
}

导出 Swagger 文档

前提是项目已经开启了 swagger 依赖,能够导出 json 格式的 swagger 数据。
开启 swagger 后, http://localhost:8080/v2/api-docs 就是 json 数据地址,或者如果有 swagger-ui 界面,在主页左上角有此链接。


Swagger2Markup

Swagger2Markup 是 Github 上的一个开源项目。该项目主要用来将 Swagger 自动生成的文档转换成几种流行的格式以便于静态部署和使用,比如:AsciiDoc、Markdown、Confluence。

Swagger2Markup 项目是将 swagger 文档导出为其他格式的基础。

Swagger2Markup / swagger2markup
https://github.com/Swagger2Markup/swagger2markup


spring-swagger2markup-demo

我们将 swagger 导出为 pdf、html、markdown 格式都需要用到 Swagger2Markup 项目,但这个项目配置比较麻烦,所以官方给出了一个 demo 项目。

有了这个项目,我们只需要将自己的 swagger 数据保存为 json 文档,然后填入这个项目的配置属性,运行下 test 就好了。

Swagger2Markup / spring-swagger2markup-demo
https://github.com/Swagger2Markup/spring-swagger2markup-demo


导出为pdf或html

1 下载 Swagger2Markup / spring-swagger2markup-demo 项目,倒入为 maven 项目,等待 maven 下载依赖完成。
2 将自己的 swagger 数据保存为 api-docs.json
3 修改 spring-swagger2markup-demo 项目的 pom 文件,找到配置项 <swagger.input>,改为自己 json 文档地址,绝对目录或相对目录都行。
4 执行 mvn test 命令,不报错的话,在项目下的 target/asciidoc 目录就能找到生成的文档。

其实,这里的 mvn test 包含两个步骤:
第一步将 json 转为 ASCIIDOC 格式。
第二步,将 ASCIIDOC 转为 pdf 和 html 格式。

使用中发现生成的 pdf 中有的中文字符不显示,但 html 是好的,可以先浏览器打开 html,再打印为 pdf 即可。

导出swagger2生成的文档
https://www.cnblogs.com/zeussbook/p/11091520.html

导出为markdown

默认情况下,Swagger2Markup 将 json 渲染为 asciidoc 基本文档格式,然后再转为 pdf 或 html 格式。
如果我们想转换为 markdown 格式,只需要修改一个参数即可
修改 spring-swagger2markup-demo 项目的 pom 文件,找到 swagger2markup-maven-plugin 插件的配置项 <swagger2markup.markupLanguage> 默认是 ASCIIDOC 改为 MARKDOWN,然后执行 maven 插件的构建过程即可。
这次我们不需要执行 mvn test 只执行第一步即可。

Spring Boot 2.x基础教程:Swagger静态文档的生成
https://aijishu.com/a/1060000000017742

Failed to execute goal ‘convertSwagger2markup’

首次执行时报这个错,原因是 swagger2 导出的 json 文档不规范,少了几个必须的字段,导致 Swagger2Markup 执行失败。

1 首先,可以用官方的 json 文档试一下,如果没问题,就说明 spring-swagger2markup-demo 项目配置是没问题的。
官方json示例
https://petstore.swagger.io/v2/swagger.json

2 打开官方提供的一个 swagger 编辑器
https://editor.swagger.io/
把自己的 json 帖进去,右边会告诉你格式不准确的地方。
如下图,我这里生成的 json 就是缺了 title, version, license.name 属性,导致无法生成文档,加上就好了。


editor.swagger.io

右边下面还会提示好多编码错误,不用管,只把缺字段的补上就好了。


Api2Doc

Swagger 比较臃肿,不太友好,偶然发现一个 Api2Doc 项目,和我们平常工作中用的 ShowDoc 文档非常相似,简洁又清晰。

terran4j/commons
https://github.com/terran4j/commons/tree/master/commons-api2doc

还在用 Swagger2 生成 Restful API 文档?来试试 Api2Doc 吧
https://my.oschina.net/u/3017144/blog/1679922

用Api2Doc代替Swagger2生成 Restful API 文档
https://www.jianshu.com/p/281df3ecd3b0


上一篇 Spring-Boot-Actuator

下一篇 REST

阅读
评论
1,228
阅读预计5分钟
创建日期 2019-04-29
修改日期 2020-08-07
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论