天天看點

springdoc--spring系統自動生成接口文檔(概述)背景想要達成的目标 技術思路

背景

在傳統的公司裡,傳統的spring項目裡,會出現接口文檔丢失,遺漏,謬誤的情況。那麼有沒有什麼辦法能一鍵生成準确的接口文檔?目前比較常用的管理工具是swagger,但是存在一個問題是說老的代碼很多沒有采用swagger注解的方式,肉眼可見在傳統企業的數字化轉型中會有很多這樣的系統,是以想開發一個小工具,基于代碼,不需要任何侵入性生成接口文檔。

相關工具

swagger

swagger 通過注解接口生成文檔,包括接口名,請求方法,參數,傳回資訊等。但是老系統代碼改造,存在一定困難。springfox支援如下注解:

詳見 Springfox Reference Documentation

springdoc--spring系統自動生成接口文檔(概述)背景想要達成的目标 技術思路

javaparser

javaparser将java源碼解析為一棵文法樹,然後基于這棵樹對java代碼進行分析和修改的工具。其可以認為是一個靜态的代碼分析工具,常用于做代碼規範檢查,代碼格式化,java代碼分析等。依賴于AST文法樹,可以用來作為接口文檔自動化工具。業内很多工具依賴于javaparser,比較知名的有JApiDocs, 對比與swagger,主要優勢為:

無須swagger中必須的注解,核心依賴于較為基礎的javadoc,形如下圖格式即可生成文檔。

springdoc--spring系統自動生成接口文檔(概述)背景想要達成的目标 技術思路

 如上圖可以看出,還是需要依賴@param指出參數類型,雖然通常來說IDEA會幫我們自動完成該步驟,但是還有可能未辨別@param。

想要達成的目标

能否完全不依賴新加的注解,即無須對代碼進行任何改動,生成準确的接口文檔。最終達成如下圖效果(已達成)

springdoc--spring系統自動生成接口文檔(概述)背景想要達成的目标 技術思路

 技術思路

  • 設計接口的資料結構
  • 基于spring IOC機制擷取所有接口清單
  • 處理接口URI,type,name等基礎資訊
  • 基于java reflection 處理接口入參,分為query參數,body參數
  • 基于java reflection 處理接口出參
  • 處理出參的泛型場景
  • 基于模闆引擎生成離線markdown格式接口文檔

此下為目前還未實作的思路

  • 依賴javaparser抓取注釋内容