Swagger2离线文档:swagger2markup代码和插件方式

简介: Swagger2离线文档:swagger2markup代码和插件方式

目录

Swagger文章汇总

Swagger2Markup简介

项目版本说明:

swagger2markup代码方式

第一步:编辑pom.xml增加需要使用的相关依赖和仓库

第二步:编写一个单元测试用例来生成执行生成文档的代码

生成AsciiDoc

生成markdown

生成confluence

swagger2markup插件方式

生成asciidoc或markdown文档

添加swagger2markup插件

生成asciidoc或markdown文档

相关说明

生成HTML文档

添加asciidoctor插件

生成HTML文档

生成PDF文档

添加asciidoctor插件

生成PDF文档

解决PDF出现乱码、空白的问题:

同时生成HTML与PDF文档

添加插件

同时生成HTML与PDF文档



Swagger文章汇总


Swagger2Markup简介

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

项目主页:https://github.com/Swagger2Markup/swagger2markup


项目版本说明:

  • spring boot 2.0.x
  • swagger 2.8.0


swagger2markup代码方式

第一步:编辑pom.xml增加需要使用的相关依赖和仓库

<dependency>
  <groupId>io.github.swagger2markup</groupId>
  <artifactId>swagger2markup</artifactId>
  <version>1.3.1</version>
</dependency>


其中依赖组件,这两个要注意,在离线开发环境,需要自己手动添加到本地仓库

    <dependency>
      <groupId>nl.jworks.markdown_to_asciidoc</groupId>
      <artifactId>markdown_to_asciidoc</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>nl.jworks.markdown_to_asciidoc</groupId>
      <artifactId>markdown_to_asciidoc</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
    </dependency>


第二步:编写一个单元测试用例来生成执行生成文档的代码

生成AsciiDoc

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DemoApplicationTests {
    @Test
    public void generateAsciiDocs() throws Exception {
        //    输出Ascii格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .build();
        Swagger2MarkupConverter.from(new URL("http://localhost:8080/v2/api-docs"))
                .withConfig(config)
                .build()
                .toFolder(Paths.get("src/docs/asciidoc/generated"));
    }
}
  • 通过Java代码来生成:只需要修改withMarkupLanguage属性来指定不同的格式以及toFolder属性为结果指定不同的输出目录。


生成markdown

Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
    .withMarkupLanguage(MarkupLanguage.MARKDOWN)
    .build();
Swagger2MarkupConverter.from(new URL("http://localhost:8080/v2/api-docs"))
    .withConfig(config)
    .build()
    .toFolder(Paths.get("src/docs/markdown/generated"));


生成confluence

Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
    .withMarkupLanguage(MarkupLanguage.CONFLUENCE_MARKUP)
    .build();
Swagger2MarkupConverter.from(new URL("http://localhost:8080/v2/api-docs"))
    .withConfig(config)
    .build()
    .toFolder(Paths.get("src/docs/confluence/generated"));


以上代码内容很简单,大致说明几个关键内容:

  • MarkupLanguage.ASCIIDOC:指定了要输出的最终格式。除了ASCIIDOC之外,还有MARKDOWN和CONFLUENCE_MARKUP
  • from(new URL("http://localhost:8080/v2/api-docs"):指定了生成静态部署文档的源头配置,可以是这样的URL形式,也可以是符合Swagger规范的String类型或者从文件中读取的流。如果是对当前使用的Swagger项目,我们通过使用访问本地Swagger接口的方式,如果是从外部获取的Swagger文档配置文件,就可以通过字符串或读文件的方式
  • toFolder(Paths.get("src/docs/asciidoc/generated"):指定最终生成文件的具体目录位置

在执行了上面的测试用例之后,我们就能在当前项目的src目录下获得如下内容:

AsciiDoc

src
--docs
----asciidoc
------generated
--------definitions.adoc
--------overview.adoc
--------paths.adoc
--------security.adoc

AsciiDoc

Markdown和Confluence

src
--docs
----confluence
------generated
--------definitions.txt
--------overview.txt
--------paths.txt
--------security.txt
----markdown
------generated
--------definitions.md
--------overview.md
--------paths.md
--------security.md


可以看到,这种方式在运行之后就生成出了4个不同的静态文件。

输出到单个文件

如果不想分割结果文件,也可以通过替换toFolder(Paths.get("src/docs/asciidoc/generated")toFile(Paths.get("src/docs/asciidoc/generated/all")),将转换结果输出到一个单一的文件中,这样可以最终生成html的也是单一的。


swagger2markup插件方式

生成asciidoc或markdown文档

添加swagger2markup插件

<plugin>
                <groupId>io.github.swagger2markup</groupId>
                <artifactId>swagger2markup-maven-plugin</artifactId>
                <version>1.3.3</version>
                <configuration>
                    <swaggerInput>http://localhost:9210/v2/api-docs</swaggerInput>
                    <!-- 生成asciidoc格式 -->
                    <outputFile>src/docs/asciidoc/generated/all</outputFile>
<!--                    <outputDir>src/docs/asciidoc/generated</outputDir>-->
                    <!-- 生成markdown格式 -->
<!--                    <outputFile>src/docs/markdown/generated/all</outputFile>-->
                    <config>
                        <!-- 生成asciidoc格式 -->
                        <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
                        <!-- 生成markdown格式 -->
<!--                        <swagger2markup.markupLanguage>MARKDOWN</swagger2markup.markupLanguage>-->
                        <swagger2markup.outputLanguage>ZH</swagger2markup.outputLanguage>
                        <swagger2markup.generatedExamplesEnabled>true</swagger2markup.generatedExamplesEnabled>
                        <swagger2markup.inlineSchemaEnabled>false</swagger2markup.inlineSchemaEnabled>
                        <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
                    </config>
                </configuration>
            </plugin>


生成asciidoc或markdown文档

  • 运行项目
  • 执行swagger2markup插件:maven窗口:指定项目下的Plugins.swagger2markup


相关说明

  • swaggerInput:swagger生成的接口json数据文件。
  • 输出
  • outputFile:输出到单一文件中
  • outputDir:输出到指定文件中
  • swagger2markup.markupLanguage:输出格式
  • swagger2markup.outputLanguage:语言类型:如中文(ZH),默认英语(EN)
  • swagger2markup.generatedExamplesEnabled:指定是否应该生成HTTP请求和响应示例,默认false
  • swagger2markup.inlineSchemaEnabled:是否启用参数内联
  • swagger2markup.pathsGroupedBy:api排序规则 一般用tags排序


swagger2markup插件配置说明

http://swagger2markup.github.io/swagger2markup/1.3.3/#_swagger2markup_properties

生成asciidoc或markdown文档


生成HTML文档

添加asciidoctor插件

<plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.6</version>
                <configuration>
                    <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
                    <outputDirectory>src/docs/asciidoc/html</outputDirectory>
                    <backend>html5</backend>
                    <attributes>
                        <!--导航栏在左-->
                        <toc>left</toc>
                        <!--显示层级数-->
                        <toclevels>3</toclevels>
                        <!--自动打数字序号-->
                        <sectnums>true</sectnums>
                    </attributes>
                </configuration>
            </plugin>


生成HTML文档

  • 生成asciidoc文档
  • 执行插件:maven窗口:指定项目下的Plugins.asciidoctor.asciidoctor:process-asciidoc

相关说明

  • sourceDirectory:asciidoc文档所在目录
  • outputDirectory:HTML的输出目录
  • backend:类型

生成HTML文档

生成PDF文档

添加asciidoctor插件

<plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.6</version>
                <configuration>
                  <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
                    <outputDirectory>src/docs/asciidoc/pdf</outputDirectory>
                    <backend>pdf</backend>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctorj-pdf</artifactId>
                        <version>1.5.0-alpha.16</version>
                    </dependency>
                </dependencies>
            </plugin>


生成PDF文档

  • 生成asciidoc文档
  • 执行插件:maven窗口:指定项目下的Plugins.asciidoctor.asciidoctor:process-asciidoc


解决PDF出现乱码、空白的问题:

PDF出现乱码、空白的问题

  • maven仓库中的asciidoctorj-pdf jar包,使用压缩工具打开:
  • 进入asciidoctorj-pdf-1.5.0-alpha.16.jar\gems\asciidoctor-pdf-1.5.0.alpha.16\data\ 目录
  • fonts:字体文件目录
  • themes:配置文件目录
  • 下载字体:
  • 修改配置
  • 进入themes目录,修改default-theme.yml文件
  • 修改以base:font_family属性值对应的字体文件配置:在font:catalog下。
base:
  font_family: Noto Serif
font:
  catalog:
    Noto Serif:
      normal: KaiGenGothicCN-Regular.ttf
      bold: KaiGenGothicCN-Bold.ttf
      italic: KaiGenGothicCN-Regular-Italic.ttf
      bold_italic: KaiGenGothicCN-Bold-Italic.ttf


同时生成HTML与PDF文档

添加插件

<plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.6</version>
                <configuration>
                  <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctorj-pdf</artifactId>
                        <version>1.5.0-alpha.16</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>output-html</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>html5</backend>
                       <outputDirectory>src/docs/asciidoc/html</outputDirectory>
                            <attributes>
                                <!--导航栏在左-->
                                <toc>left</toc>
                                <!--显示层级数-->
                                <toclevels>3</toclevels>
                                <!--自动打数字序号-->
                                <sectnums>true</sectnums>
                            </attributes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>output-pdf</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>pdf</backend>
                        <outputDirectory>src/docs/asciidoc/pdf</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


同时生成HTML与PDF文档

  • 生成asciidoc文档
  • 执行插件:maven窗口:指定项目下的Plugins.asciidoctor.asciidoctor:process-asciidoc
  • 生成文档(二者选其一):注:此步骤耗时,大概七八分钟
  • 执行命令mvn generate-resources
  • 使用idea设置快捷启动:run/debug configurations -> maven -> command line:generate-resources,执行


PDFPDF出现乱码、空白的问题

  • 参考单独生成PDF问题解决

相关说明

  • executions:多个执行任务配置
  • execution.id:不可重复
  • 其他:参考单独生成HTML与PDF相关说明

 

参考链接:

http://blog.didispace.com/swagger2markup-markdown-confluence/



目录
相关文章
|
1月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
3月前
|
数据可视化 Linux API
使用Docker安装部署Swagger Editor并远程访问编辑API文档
使用Docker安装部署Swagger Editor并远程访问编辑API文档
52 0
|
4月前
|
Dubbo Java 测试技术
提升API文档品质:Swagger annotations (注解)使用教程
Swagger 提供的注解集是其框架中定义 API 规范和文档的重要工具。这些注解在代码里标注重要部分,为 Swagger 的解析工作铺路,进而生成详尽的 API 文档。开发者编写的注释能够被转换成直观的文档,并展现API端点、参数和响应等信息。这不仅提升了开发人员对 API 运作的理解与沟通,也使得测试和集成过程更加顺畅。
|
6月前
|
API Python
flask 生成swagger文档
flask 生成swagger文档
83 0
|
6月前
使用Swagger 让某些接口不显示在文档
使用Swagger 让某些接口不显示在文档
36 0
|
6月前
|
Java API 网络架构
Spring Boot 学习研究笔记(六) -使用 Swagger 集成文档
Spring Boot 学习研究笔记(六) -使用 Swagger 集成文档
|
8月前
|
Java 测试技术 API
Spring Boot之Restful服务与Swagger框架:构建易用的API文档与测试工具
本篇详细介绍了如何在Spring Boot应用中构建Restful服务,并结合Swagger框架实现自动生成API文档和提供API测试工具的方法。通过编写Controller类定义Restful API,以及配置Swagger框架,读者可以轻松地生成API文档和进行API测试,从而提升开发效率和项目可维护性。该博文帮助读者了解了如何使用Spring Boot和Swagger框架来简化API文档编写和测试的过程,为Web应用开发提供了有力的支持。
207 2
Spring Boot之Restful服务与Swagger框架:构建易用的API文档与测试工具
|
9月前
|
安全 数据可视化 Java
Swagger 自动生成 Api 文档:简化接口文档编写
自动生成 API 文档的好处不言而喻,它可以提供给你的团队或者外部协作者,方便 API 使用者准确地调用到你的 API。为了降低手动编写文档带来的错误,很多 API 开发者会偏向于寻找一些好的方法来自动生成 API 文档。
Swagger 自动生成 Api 文档:简化接口文档编写
|
Java
SpringBoot整合Swagger2管理文档的使用、汉化
SpringBoot整合Swagger2管理文档的使用、汉化
77 0
|
数据可视化 前端开发 IDE
Swagger URL 插件上线!同步文档更便捷!
Swagger 的用户有以下几个痛点: - 测试不方便,有简单的调用测试,但是没有历史也没有鉴权等功能; - 没有人员管理,无法协作/通知/版本管理; - 对于前端人员不友好,没有参数描述/值可能性,没有 Mock ; - 对代码有侵入性。
Swagger URL 插件上线!同步文档更便捷!