欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

將Swagger2文檔導(dǎo)出為HTML或markdown等格式離線閱讀解析

 更新時(shí)間:2019年11月26日 08:23:45   作者:字母哥博客  
這篇文章主要介紹了將Swagger2文檔導(dǎo)出為HTML或markdown等格式離線閱讀,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

網(wǎng)上有很多《使用swagger2構(gòu)建API文檔》的文章,該文檔是一個(gè)在線文檔,需要使用HTTP訪問(wèn)。但是在我們?nèi)粘J褂胹wagger接口文檔的時(shí)候,有的時(shí)候需要接口文檔離線訪問(wèn),如將文檔導(dǎo)出為html、markdown格式。又或者我們不希望應(yīng)用系統(tǒng)與swagger接口文檔使用同一個(gè)服務(wù),而是導(dǎo)出HTML之后單獨(dú)部署,這樣做保證了對(duì)接口文檔的訪問(wèn)不影響業(yè)務(wù)系統(tǒng),也一定程度提高了接口文檔的安全性。核心的實(shí)現(xiàn)過(guò)程就是:

  • 在swagger2接口文檔所在的應(yīng)用內(nèi),利用swagger2markup將接口文檔導(dǎo)出為adoc文件,也可以導(dǎo)出markdown文件。
  • 然后將adoc文件轉(zhuǎn)換為靜態(tài)的html格式,可以將html發(fā)布到nginx或者其他的web應(yīng)用容器,提供訪問(wèn)(本文不會(huì)講html靜態(tài)部署,只講HTML導(dǎo)出)。

注意:adoc是一種文件格式,不是我的筆誤。不是doc文件也不是docx文件。

一、maven依賴類(lèi)庫(kù)

在已經(jīng)集成了swagger2的應(yīng)用內(nèi),通過(guò)maven坐標(biāo)引入相關(guān)依賴類(lèi)庫(kù),pom.xml代碼如下:

<dependency>
 <groupId>io.github.swagger2markup</groupId>
 <artifactId>swagger2markup</artifactId>
 <version>1.3.1</version>
</dependency>
<dependency>
 <groupId>io.swagger</groupId>
 <artifactId>swagger-core</artifactId>
 <version>1.5.16</version>
</dependency>
<dependency>
 <groupId>io.swagger</groupId>
 <artifactId>swagger-models</artifactId>
 <version>1.5.16</version>
</dependency>

swagger2markup用于將swagger2在線接口文檔導(dǎo)出為html,markdown,adoc等格式文檔,用于靜態(tài)部署或離線閱讀。其中第一個(gè)maven坐標(biāo)是必須的。后兩個(gè)maven坐標(biāo),當(dāng)你在執(zhí)行后面的代碼過(guò)程中報(bào)下圖中的ERROR,或者有的類(lèi)無(wú)法import的時(shí)候使用。

產(chǎn)生異常的原因已經(jīng)有人在github的issues上給出解釋了:當(dāng)你使用swagger-core版本大于等于1.5.11,并且swagger-models版本小于1.5.11就會(huì)有異常發(fā)生。所以我們顯式的引入這兩個(gè)jar,替換掉swagger2默認(rèn)引入的這兩個(gè)jar。

二、生成adoc格式文件

下面的代碼是通過(guò)編碼方式實(shí)現(xiàn)的生成adoc格式文件的方式

@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) //設(shè)置生成格式
    .withOutputLanguage(Language.ZH) //設(shè)置語(yǔ)言中文還是其他語(yǔ)言
    .withPathsGroupedBy(GroupBy.TAGS)
    .withGeneratedExamples()
    .withoutInlineSchema()
    .build();

  Swagger2MarkupConverter.from(new URL("http://localhost:8888/v2/api-docs"))
    .withConfig(config)
    .build()
    .toFile(Paths.get("src/main/resources/docs/asciidoc"));
 }
}

使用RunWith注解和SpringBootTest注解,啟動(dòng)應(yīng)用服務(wù)容器。 SpringBootTest.WebEnvironment.DEFINED_PORT表示使用application.yml定義的端口,而不是隨機(jī)使用一個(gè)端口進(jìn)行測(cè)試,這很重要。

Swagger2MarkupConfig 是輸出文件的配置,如文件的格式和文件中的自然語(yǔ)言等

Swagger2MarkupConverter的from表示哪一個(gè)HTTP服務(wù)作為資源導(dǎo)出的源頭(JSON格式),可以自己訪問(wèn)試一下這個(gè)鏈接。8888是我的服務(wù)端口,需要根據(jù)你自己的應(yīng)用配置修改。

toFile表示將導(dǎo)出文件存放的位置,不用加后綴名。也可以使用toFolder表示文件導(dǎo)出存放的路徑。二者區(qū)別在于使用toFolder導(dǎo)出為文件目錄下按標(biāo)簽TAGS分類(lèi)的多個(gè)文件,使用toFile是導(dǎo)出一個(gè)文件(toFolder多個(gè)文件的合集)。

@Test
public void generateMarkdownDocsToFile() throws Exception {
 // 輸出Markdown到單文件
 Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
   .withMarkupLanguage(MarkupLanguage.MARKDOWN)
   .withOutputLanguage(Language.ZH)
   .withPathsGroupedBy(GroupBy.TAGS)
   .withGeneratedExamples()
   .withoutInlineSchema()
   .build();

 Swagger2MarkupConverter.from(new URL("http://localhost:8888/v2/api-docs"))
   .withConfig(config)
   .build()
   .toFile(Paths.get("src/main/resources/docs/markdown"));
}

上面的這一段代碼是生成markdown格式接口文件的代碼。執(zhí)行上面的2段單元測(cè)試代碼,就可以生產(chǎn)對(duì)應(yīng)格式的接口文件。

還有一種方式是通過(guò)maven插件的方式,生成adoc和markdown格式的接口文件。筆者不常使用這種方式,沒(méi)有使用代碼生成的方式配置靈活,很多配置都放到pom.xml感覺(jué)很臃腫。但還是介紹一下,首先配置maven插件swagger2markup-maven-plugin。

<plugin>
 <groupId>io.github.swagger2markup</groupId>
 <artifactId>swagger2markup-maven-plugin</artifactId>
 <version>1.3.1</version>
 <configuration>
  <swaggerInput>http://localhost:8888/v2/api-docs</swaggerInput><!---swagger-api-json路徑-->
  <outputDir>src/main/resources/docs/asciidoc</outputDir><!---生成路徑-->
  <config>
   <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage><!--生成格式-->
  </config>
 </configuration>
</plugin>

然后運(yùn)行插件就可以了,如下圖:

三、通過(guò)maven插件生成HTML文檔

<plugin>
 <groupId>org.asciidoctor</groupId>
 <artifactId>asciidoctor-maven-plugin</artifactId>
 <version>1.5.6</version>
 <configuration>
   <!--asciidoc文件目錄-->
  <sourceDirectory>src/main/resources/docs</sourceDirectory>
  <!---生成html的路徑-->
  <outputDirectory>src/main/resources/html</outputDirectory>
  <backend>html</backend>
  <sourceHighlighter>coderay</sourceHighlighter>
  <attributes>
   <!--導(dǎo)航欄在左-->
   <toc>left</toc>
   <!--顯示層級(jí)數(shù)-->
   <!--<toclevels>3</toclevels>-->
   <!--自動(dòng)打數(shù)字序號(hào)-->
   <sectnums>true</sectnums>
  </attributes>
 </configuration>
</plugin>

adoc的sourceDirectory路徑必須和第三小節(jié)中生成的adoc文件路徑一致。然后按照下圖方式運(yùn)行插件。

HTMl接口文檔顯示的效果如下,有了HTML接口文檔你想轉(zhuǎn)成其他各種格式的文檔就太方便了,有很多工具可以使用。這里就不一一介紹了。

總結(jié)

以上所述是小編給大家介紹的將Swagger2文檔導(dǎo)出為HTML或markdown等格式離線閱讀解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • JavaWeb實(shí)現(xiàn)顯示mysql數(shù)據(jù)庫(kù)數(shù)據(jù)

    JavaWeb實(shí)現(xiàn)顯示mysql數(shù)據(jù)庫(kù)數(shù)據(jù)

    MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的。本文將利用JavaWeb實(shí)現(xiàn)顯示mysql數(shù)據(jù)庫(kù)數(shù)據(jù)功能,需要的可以參考一下
    2022-03-03
  • Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼

    Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)文件切割拼接的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Spring Boot集成教程之異步調(diào)用Async

    Spring Boot集成教程之異步調(diào)用Async

    在項(xiàng)目中,當(dāng)訪問(wèn)其他人的接口較慢或者做耗時(shí)任務(wù)時(shí),不想程序一直卡在耗時(shí)任務(wù)上,想程序能夠并行執(zhí)行,我們可以使用多線程來(lái)并行的處理任務(wù),也可以使用spring提供的異步處理方式@Async。需要的朋友們下面來(lái)一起看看吧。
    2018-03-03
  • Java集合刪除元素ArrayList實(shí)例詳解

    Java集合刪除元素ArrayList實(shí)例詳解

    這篇文章主要介紹了Java集合刪除元素ArrayList實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring Security 安全認(rèn)證的示例代碼

    Spring Security 安全認(rèn)證的示例代碼

    這篇文章主要介紹了Spring Security 安全認(rèn)證的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring Bean常用依賴注入方式詳解

    Spring Bean常用依賴注入方式詳解

    這篇文章主要介紹了Spring Bean常用三種依賴注入方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 詳解Spring整合Ehcache管理緩存

    詳解Spring整合Ehcache管理緩存

    本文先通過(guò)Ehcache應(yīng)用的范例來(lái)介紹它的基本使用方法,然后再介紹與Spring整合的方法,
    2017-03-03
  • java中l(wèi)ambda表達(dá)式語(yǔ)法說(shuō)明

    java中l(wèi)ambda表達(dá)式語(yǔ)法說(shuō)明

    “Lambda 表達(dá)式”(lambda expression)是一個(gè)匿名函數(shù),Lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名,直接對(duì)應(yīng)于其中的lambda抽象(lambda abstraction),是一個(gè)匿名函數(shù),即沒(méi)有函數(shù)名的函數(shù)。Lambda表達(dá)式可以表示閉包(注意和數(shù)學(xué)傳統(tǒng)意義上的不同)。
    2016-09-09
  • java并發(fā)容器ConcurrentHashMap深入分析

    java并發(fā)容器ConcurrentHashMap深入分析

    這篇文章主要為大家介紹了java并發(fā)容器ConcurrentHashMap使用示例及深入分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Eclipse快捷鍵使用小結(jié)

    Eclipse快捷鍵使用小結(jié)

    Eclipse是用java的同行必不可少的工具,我總結(jié)了一下它的快捷鍵,太常用的ctrl+單擊、ctrl+shift+F、Ctrl+1等我就不細(xì)說(shuō)了,主要是方便查看。下邊小編就詳細(xì)的為大家介紹一下
    2013-07-07

最新評(píng)論