swagger导出离线PDF API文档
基于swagger2makeup插件和asciidoctor来生成离线PDF Restful API文档。
起因
项目中使用swagger2来生成开发API文档,但是涉及到跨团队或者项目交付的时候,需要提供离线API文档,在尝试使用swagger导出离线文档的时候,发现baidu的很多文章基本上大同小异。
而且很多都要在项目中生成对应的离线asciidoc,在开发一个独立的Test case来进行,同时引入其他依赖到项目中,感觉对代码有侵入,本身业务也不需要这些依赖,发现结合自己项目很多东西都要修改,后面发现可以通过swagger2makeup来在客户端通过命令行来实现,也是非常简单同时还不用侵入代码,特意记录起来分享。
离线文档生成
根据swagger2markup在当前目录下生成文件名为“swagger-doc.adoc”的asciidoc文件。本文中使用docker镜像来创建adoc文件,也可以参考官网来通过jar来生成。
1 | sh复制代码docker run --rm -v $(pwd):/opt swagger2markup/swagger2markup convert -i "http://192.168.101.6:8016/v2/api-docs" -f /opt/swagger-doc |
如果是已经生成的本地json文件也可以替换url链接为json文件,例如本地/tmp/swagger.json
1 | sh复制代码docker run --rm -v $(pwd):/opt swagger2markup/swagger2markup convert -i /tmp/swagger.json -f /opt/swagger-doc |
根据产生的adoc文件在当前目录下生成名为“swagger-doc.pdf”的文档。
1 | sh复制代码docker run -it -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf swagger-doc.adoc |
http://192.168.101.6:8016/v2/api-docs 地址内容这里只展示部分内容
1 | json复制代码{ |
执行完成效果查看
1 | sh复制代码qujianfei@troyMac ~/docker/swagger_dir ls |
查看pdf文件
swagger配置
build.gradle
1 | yaml复制代码 implementation 'io.springfox:springfox-swagger2:2.9.2' |
spring配置类
1 | java复制代码package com.troy.config; |
swagger配置这里只粘贴了项目中的部分代码,实际使用中不需要和保持一致,只要引入swagger2可以生成swagger json文件即可。
结尾
整体使用下来发现,基于swagger2makeup插件和asciidoctor生成离线文档的方式操作简单并且代码侵入性小,而且几乎没有学习成本,可以做到即插即用,可以完全满足一般需求。但是本次示例也有一些遗留问题,就是对于pdf的字体的配置,这个本次就不在做过多探究了,后面如果有时间在继续探索字体的设置,也欢迎哪位同学如果有方案也可以一起探讨。
本文转载自: 掘金