Swagger接口如何生成Html离线文档
A very simple tool that converts Swagger Api Document to Html File.
小记Swagger接口生成Html离线文档
由来
很多人用swagger2markup以及asciidoctor-maven-plugin插件来生成html格式的文档。
由于swagger2markup依赖的asm库版本较低, 且依赖较多, 容易与项目中依赖的核心库冲突。
所以, 干脆把Swagger接口文档转为Html文档独立出来, 做成一个小工具, 这样就清爽干净多了!
使用
# 下载源码
git clone https://github.com/iflyendless/Swagger2Html.git
# 编译打包
mvn clean package
# 使用target目录下的jar包, 参数是swagger接口数据
java -jar Swagger2Html-1.0-SNAPSHOT-jar-with-dependencies.jar http://localhost:8080/v2/api-docs
当前目录下便会新增api.html文件,用浏览器打开效果如下图:

看起来是不是有模有样的! 建议正在使用swagger的朋友可以感受一下生成的离线Html。
实现
完整源码见:https://github.com/iflyendless/Swagger2Html
引入依赖:
<dependency>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj</artifactId>
<version>2.4.3</version>
</dependency>
代码实现:
import io.github.swagger2markup.GroupBy;
import io.github.swagger2markup.Language;
import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
import io.github.swagger2markup.markup.builder.MarkupLanguage;
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.AttributesBuilder;
import org.asciidoctor.OptionsBuilder;
import org.asciidoctor.SafeMode;
import java.io.File;
import java.net.URL;
import java.nio.file.Paths;
/**
* Swagger接口文档转为html文档
*/
public class Swagger2Html {
private static final String DEFAULT_SWAGGER_API = "http://localhost:8080/v2/api-docs";
private static final String DEFAULT_ADOC_PATH = "./api.adoc";
private static final String DEFAULT_HTML_PATH = "./api.html";
public static void main(String[] args) throws Exception {
String swaggerApi = args.length > 0 ? args[0] : DEFAULT_SWAGGER_API;
String adocPath = args.length > 1 ? args[1] : DEFAULT_ADOC_PATH;
String htmlPath = args.length > 2 ? args[2] : DEFAULT_HTML_PATH;
System.out.println("swaggerApi: " + swaggerApi);
System.out.println("adocPath: " + adocPath);
System.out.println("htmlPath: " + htmlPath);
generateAsciiDocsToFile(swaggerApi, adocPath);
convert2Html(adocPath, htmlPath);
System.out.println("*** success!!! ***");
}
/**
* 生成AsciiDocs格式文档,并汇总成一个文件
*/
private static void generateAsciiDocsToFile(String swaggerApi, String filePath) throws Exception {
// 输出Ascii到单个文件
Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
.withMarkupLanguage(MarkupLanguage.ASCIIDOC)
.withOutputLanguage(Language.ZH)
.withPathsGroupedBy(GroupBy.TAGS)
.withGeneratedExamples()
.withoutInlineSchema()
.build();
Swagger2MarkupConverter.from(new URL(swaggerApi))
.withConfig(config)
.build()
.toFileWithoutExtension(Paths.get(filePath));
}
/**
* convert AsciiDoc files using AsciidoctorJ.
* 参考: https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/master/src/main/java/org/asciidoctor/maven/AsciidoctorMojo.java
*/
private static void convert2Html(String sourceFile, String targetFile) throws Exception {
try (Asciidoctor asciidoctor = Asciidoctor.Factory.create()) {
AttributesBuilder attributes = AttributesBuilder.attributes()
.sourceHighlighter("coderay")
.attribute("toc", "left")
.attribute("toclevels", "3")
.attribute("sectnums");
OptionsBuilder options = OptionsBuilder.options()
.docType("book")
.backend("html")
.safe(SafeMode.UNSAFE)
.headerFooter(true)
.attributes(attributes)
.toFile(new File(targetFile));
asciidoctor.convertFile(new File(sourceFile), options);
}
}
}
随手记录,方便你我他!
Swagger接口如何生成Html离线文档的更多相关文章
- spring boot利用swagger和spring doc生成在线和离线文档
参考博客地址: 在线文档:http://blog.didispace.com/springbootswagger2/ 离线文档:http://www.jianshu.com/p/af7a6f29bf4 ...
- 使用swagger作为restful api的doc文档生成——从源码中去提取restful URL接口描述文档
初衷 记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情.也许多点,也许少点.甚至,接口总是需要适应新需求的,修改了,增加了,这份 ...
- 在.Net Core WebAPI下给Swagger增加导出离线文档功能
一丶前言 最近刚接触到Swagger,在github上下载了它的源码和demo学习了一遍,发现这个组件非常好用,不过不足的是它没有导出离线文档的功能,于是乎我就想给它加一个导出功能 Swagger G ...
- 使用swagger作为restful api的doc文档生成
初衷 记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情.也许多点,也许少点.甚至,接口总是需要适应新需求的,修改了,增加了,这份 ...
- swagger在线文档和离线文档
spring boot项目的swagger文档. 依赖从spring boot的基础上增加.参考pom.xml: <dependency> <groupId>org.sprin ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- 使用Swagger2Markup归档swagger生成的API文档
文章出处: http://blog.didispace.com/swagger2markup-asciidoc/ 说明 项目中使用Swagger之后,我们能够很轻松的管理API文档,并非常简单的模拟接 ...
- cocos2d-x3.6 生成带类图的离线文档
我的博客:http://blog.csdn.net/dawn_moon cocos2d-x的官网有点慢,并且最新3.6的在线API文档居然没有了类图,不知道什么原因,之前2.2.6都是有的. 只是能够 ...
- Spring Boot学习笔记 - 整合Swagger2自动生成RESTful API文档
1.添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!--swagger2--> <dependency> <groupId>io.spr ...
随机推荐
- 2015 - 2020 最新 Linux 命令大全
# 2015 - 2020 最新 Linux 命令大全 ## VIM 命令模式(Command mode):vi 插入模式(Insert mode):i底线命令模式(Last line mode):e ...
- queueMicrotask & EventLoop & macrotask & microtask
queueMicrotask https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicro ...
- webpack defineConstants
webpack defineConstants PAGES 全局常量/全局变量 https://webpack.js.org/plugins/define-plugin/ taro https://n ...
- 「NGK每日快讯」12.23日NGK第50期官方快讯!
- 人物传记-BILL RAY:低谷时的信念,决定你能走多远
自2018年全球经济危机以来,以工作为重的成年人们一直备受打击.尤其是2020年,全球贸易争端使得经济下滑严重,很多公司倒闭破产,有些人甚至从富豪变成了负债者,走向了人生低谷.其实,每个人都会遇到人生 ...
- JULLIAN MURPHY:拥有良好的心态,运气福气便会自来
JULLIAN MURPHY是星盟全球投资公司的基金预审经理,负责星盟投资项目预审,有着资深的基金管理经验,并且在区块链应用的兴起中投资了多个应用区块链技术的公司. JULLIAN MURPHY认为往 ...
- python 第三方库paramiko
目录 介绍 三种常用方式 使用密码进行登录 使用密钥免密码登录 SFTP 传输文件 terminal demo 介绍 paramiko是什么可以参考其他人的博客或文章,这里不再赘述,直入正题. 本次测 ...
- 为什么ElasticSearch比MySQL更适合全文索引
熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤,对这个过程不了解的同学可以先行 ...
- HTTP/1.1报文详解
本文为<三万长文50+趣图带你领悟web编程的内功心法>第三个章节. 3.HTTP/1.1报文详解 在RFC2616中心详细的描述了HTTP/1.1[1]的报文,感兴趣的朋友也可以前往阅读 ...
- eclipse从接口快速跳转到实现类
1.只跳转到实现类上 按住Ctrl键,把鼠标的光标放在要跳转的接口上面,选择第二个 2.直接跳转大实现的方法上 按住Ctrl键,把鼠标的光标放在要跳转的方法上面,选择第二个 对比可以发现,操作都是一样 ...