將Swagger2文檔導出為HTML或markdown等格式離線閱讀

2020-12-24 字母哥博客

將Swagger2文檔導出為HTML或markdown等格式離線閱讀

網上有很多《使用swagger2構建API文檔》的文章,swagger2文檔是一個在線文檔,需要使用HTTP訪問。但是在我們日常使用swagger接口文檔的時候,有的時候需要接口文檔離線訪問,如將文檔導出為html、markdown格式。又或者我們不希望應用系統與swagger接口文檔使用同一個服務,而是導出HTML之後單獨部署,這樣做保證了對接口文檔的訪問不影響業務系統,也一定程度提高了接口文檔的安全性。核心的實現過程就是:

在swagger2接口文檔所在的應用內,利用swagger2markup將接口文檔導出為adoc文件,也可以導出markdown文件。

然後將adoc文件轉換為靜態的html格式,可以將html發布到nginx或者其他的web應用容器,提供訪問(本文不會講html靜態部署,只講HTML導出)。

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

一、maven依賴類庫

在已經集成了swagger2的應用內,通過maven坐標引入相關依賴類庫,pom.xml代碼如下:

swagger2markup用於將swagger2在線接口文檔導出為html,markdown,adoc等格式文檔,用於靜態部署或離線閱讀。其中第一個maven坐標是必須的。後兩個maven坐標,當你在執行後面的代碼過程中報下圖中的ERROR,或者有的類無法import的時候使用。

swagger2markup過程可能拋出的異常

產生異常的原因已經有人在github的issues上給出解釋了:當你使用swagger-core版本大於等於1.5.11,並且swagger-models版本小於1.5.11就會有異常發生。所以我們顯式的引入這兩個jar,替換掉swagger2默認引入的這兩個jar。

swagger2markup異常的解決方案

二、生成adoc格式文件

下面的代碼是通過編碼方式實現的生成adoc格式文件的方式

使用RunWith註解和SpringBootTest註解,啟動應用服務容器。 SpringBootTest.WebEnvironment.DEFINED_PORT表示使用application.yml定義的埠,而不是隨機使用一個埠進行測試,這很重要。

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

Swagger2MarkupConverter的from表示哪一個HTTP服務作為資源導出的源頭(JSON格式),可以自己訪問試一下這個連結。8888是我的服務埠,需要根據你自己的應用配置修改。

toFile表示將導出文件存放的位置,不用加後綴名。也可以使用toFolder表示文件導出存放的路徑。二者區別在於使用toFolder導出為文件目錄下按標籤TAGS分類的多個文件,使用toFile是導出一個文件(toFolder多個文件的合集)。

上面的這一段代碼是生成markdown格式接口文件的代碼。執行上面的2段單元測試代碼,就可以生產對應格式的接口文件。

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

然後運行插件swagger2markup就可以了,如下圖:

插件運行方式(點擊可放大)

三、通過maven插件生成HTML文檔

adoc的sourceDirectory路徑必須和第三小節中生成的adoc文件路徑一致。然後按照下圖方式運行插件。

asciidoctor:process-asciidoc插件運行

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

通過搜-suo-查詢「字母哥博客」或zimug點靠m,更多精品合集知識等待你! 本號只做持續的知識輸出,希望您能關注、評論、轉發!您的支持是我不竭的創作動力!讓知識產生價值、讓程式設計師改變世界!

相關焦點

  • 一鍵下載公眾號所有文章,導出文件支持PDF,HTML,Markdown,Excel,chm等格式
    蘇生不惑第167 篇原創文章,將本公眾號設為星標,第一時間看最新文章。
  • 胖·觀察|在線協作文檔導出之痛?主流協作文檔導出評測
    這裡我們要界定什麼是在線協作文檔,首先其具備基本的在線文檔編輯功能,能夠支持word、excel的基本操作,其次其要支持多人在線編輯,提供評論批註功能,最後文檔要支持導出,支持word、markdown(MD格式)、txt等基本文檔格式。
  • 讓文檔回歸本質,為什麼應該用Markdown
    碼農們編寫文檔工具遇到的首要問題是如何處理文檔的內容和格式。內容為裡,格式為表,內容是文檔最重要的,但人類對「表」的追求又是無止境的,沒了格式的文檔就如讓人都不穿衣服一樣。舉個例子:將「為什麼碼農喜歡markdown?」 這句話的「碼農」二字加粗,「markdown」這個單詞加斜體。先不考慮,顏色,字體,標題,段落啥的,我們看看各家編輯器是如何表示。
  • VirAPI 接口文檔導出功能上線,可分享並離線查看接口文檔啦!
    VirAPI -- 非侵入式在線虛擬數據請求返回接口,可視化創建豐富多樣的數據格式,請求即可得你所需要的響應數據
  • 推薦幾款好用的markdown編輯器
    Markdown編輯器使用一套格式標記語言來對文檔內容進行排版和格式顯示。而Markdown的標記很少,常用的也就十個左右,它是一種非常輕量的標記語言。格式轉換方便,還可以輕鬆地將文本轉換為 html、pdf等。
  • Markdown 新手入門語法
    二.準備階段首先根據你的作業系統平臺選擇一個好的Markdown編輯器,當然,現在也有許多的在線網站支持編寫Markdown,但是為了離線以及更強大的拓展功能,我們還是需要一個編輯器,在這裡推薦一些:這些都是很輕很強大的編輯器,支持實時預覽和導出為PDF\HTML等多種文件形式,強烈推薦。
  • Markdown基礎語法
    「設為星標」做積極的人,而不是積極廢人!marmarkdown是一種輕量級標記語言,在2004年由約翰·格魯伯(英語:John Gruber)創建。markdown編寫的文檔可以導出為多種格式,如:html,word,圖片,pdf,Epub等,後綴為 .md 或者 .markdown。mar
  • 如何把PDF格式的外文文檔直接翻譯導出為Word文檔
    遇到看不懂的外文文檔需要處理怎麼辦?不用擔心!有金舟文檔翻譯軟體!遇到大篇幅的外文文檔需要翻譯又犯懶怎麼辦?不用擔心!有金舟文檔翻譯軟體!那遇到了語音翻譯短句翻譯圖片翻譯怎麼辦?還是找金舟文檔翻譯軟體啊!這麼神奇?
  • Markdown 開啟你更高效工作的第一步!
    何為 Markdown❝Markdown 是一種「輕量級」標記語言,它允許人們使用易讀易寫的「純文本格式」編寫文檔,然後轉換成有效的 HTML 文檔。支持導出的文件格式豐富Pandoc[22] 是標記語言轉換工具,可以實現不同標記語言的格式轉換。Typora 支持導出的文件格式極為豐富。
  • 8 個優秀的開源 Markdown 編輯器
    Markdown 是由 John Gruber 和 Aaron Swartz 共同創建的一種輕量級純文本格式語法。Markdown 可以讓用戶「以易讀、易寫的純文本格式來進行寫作,然後可以將其轉換為有效格式的 XHTML(或 HTML)「。Markdown 語法只包含一些非常容易記住的符號。其學習曲線平緩;你可以在炒蘑菇的同時一點點學習 Markdown 語法(大約 10 分鐘)。
  • Markdown與LaTeX公式的使用入門指南
    Markdown是一種輕量級標記語言,創始人為約翰·格魯伯(英語:John Gruber)。它允許人們使用易讀易寫的純文本格式編寫文檔,然後轉換成有效的XHTML(或者HTML)文檔。這種語言吸收了很多在電子郵件中已有的純文本標記的特性。
  • 一種用markdown寫PPT的方法,再也不用費勁排版了
    命令並導出幻燈片了。Marp 插件目前支持導出 HTML 和 PDF 格式,另外可以將首頁導出為 PNG 或 JPEG 格式的圖片。優化樣式當然沒有漂亮是樣式是不行的,好在可以簡單設置呈現,為此我專門做了一個 ppt
  • R Markdown 簡介
    與本文配套的文獻 Introduction to interactive documents, 將像你展示如何通過將R Markdown 報告轉變成為帶有Shiny組件的交互式文檔。R MarkdownR Markdown是通過R語言製作動態文檔的文件格式。
  • Markdown筆記 | 一篇最詳細的Markdown 教程 --> 收好
    Markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文本格式編寫文檔。Markdown 語言在 2004 由約翰·格魯伯(英語:John Gruber)創建。Markdown 編寫的文檔可以導出 HTML 、Word、圖像、PDF、Epub 等多種格式的文檔。Markdown 編寫的文檔後綴為 .md, .markdown。
  • Markdown不完全解說,還記得坑了眾多網友的Mou以及訂閱制惹眾怒的Ulysses嗎?
    文章四部分內容:接觸和使用markdown的歷史、markdown語言是什麼、推薦編輯器Typora,以及使用中幾個可能存在問題的解決方案:插入圖片、導出word文檔、插入數學公式、插入流程圖、兼容微信公眾號編輯器格式。
  • 極刊・IC 攻城獅需要了解的 Markdown 都在這裡
    它允許我們使用易讀易寫的純文本格式編寫文檔,然後轉換成有效的 XHTML(或者 HTML)以及其他格式的文檔」。這種語言吸收了很多在電子郵件中已有的純文本標記的特性。這個語言的目的是希望大家使用 「易於閱讀、易於撰寫」 的純文字格式,並選擇性的轉換成有效的 XHTML(或是 HTML)。 其中最重要的設計是可讀性,也就是說這個語言應該要能直接在字面上的被閱讀,而不用被一些格式化指令標記(像是 RTF 與 HTML)。
  • 專為 Gopher 準備的 Markdown 教程
    = nil {  panic(err) }}guide.md 存放 https://studygolang.com/markdown 上的原始 markdown 內容,略有增減;通過 goldmark 的 Convert 函數將  markdown 轉為 html,沒有使用任何選項;在項目目錄生成 guide1
  • G4例子學習文檔工具doxygen的使用
    語法的readme說明文檔,這一點上次沒有說清楚,以為所有的例子都有markdown的說明文檔,這裡道個歉,而G4所有例子的源碼都提供了符合doxygen語法的readme說明文檔格式。這樣的文檔裡面大量的語法標記,顯然不利於閱讀。由於例子代碼的根目錄內置了doxygen配置文件和shell腳本,Linux下可以很方便的使用shell腳本進行文檔的生成。如果你的電腦是聯網的,自己做後續這些意義不大,因為有官網做好的。如下圖下面是針對不聯網的電腦進行的操作,當然聯網電腦作為個人學習也是可以繼續閱讀的。
  • 如果你還不會用Markdown
    Markdown使用一、介紹考慮到周圍不少同學不太了解markdown以及從未使用過markdown,這裡對markdown進行一下介紹。我平時寫公眾號文章全部是使用markdown編寫,之後使用相應的格式轉換工具排版,比起word要方便很多(當然如果word用的很熟練的話自然是不比markdown差的,我就屬於word用得不太利索的…)markdown在平時的工作生活中有很多方便的使用場景,例如做筆記,進行項目記錄,寫報告等等。