1. 程式人生 > >API管理-定製yaml檔案管理api並基於yaml檔案生成client端、server端、springboot完整程式

API管理-定製yaml檔案管理api並基於yaml檔案生成client端、server端、springboot完整程式

1. api管理方式背景

隨著專案團隊不斷地規範,開發流程的每一步都在不斷的變化,變得更加高效並且方便管理;api管理也經歷了不少的變化,主要變化從上到下演進:

  • 編寫後端介面api,從status的action到springmvc的@RequestMapping,這些框架的確可以幫我們完成後端介面的編寫,但對於前後端分離的專案,還需要編寫專案組制定的介面文件;我相信,沒多少程式設計師寫完介面後還想寫介面文件的。
  • 由於專案組開發系統比較多,為了統一管理公司內部所有系統的介面文件,這個時候有的公司會定製化自己的介面文件管理應用,通過這個應用可以簡單的實現在網站上直接編寫介面文件資訊,無須考慮介面文件樣式等等,這樣做的確比上一種好一點,通過對定製化這個網站,我們可以做到線上除錯介面情況、分版本管理、分配api管理許可權。
    API管理-使用開源xxl-api專案管理介面
  • 在專案中整合swagger並在介面上加上api資訊的註解,並通過swagger-ui.html介面進行api介面的檢視和除錯,詳細請參考:API管理-基於SpringBoot專案整合swagger實現介面文件自動生成,如果覺得這套ui不友好,沒關係,可以換,API管理-捨棄springfox-swagger-ui,採用功能更加豐富的swagger-bootstrap-ui
  • 通過上面一種就基本可以完成api管理操作了,但這樣的swagger管理起來也存在程式碼侵入性太高,為了達到目的還需要反覆的調整介面註解或引數;既然存在問題,閱讀完這篇文章你就會學會:如何定製yaml檔案管理api並基於yaml檔案生成client端、server端、springboot完整程式,接下來進入主題。

2. 需要了解幾個概念

  • swagger 2.0和open api 3.0規範,其實就是規範對於的yaml檔案格式定義,不同的情況下可以通過特定的規範進行不同後端程式碼生成,對於swagger 2.0和open api 3.0規範生成程式碼的外掛也有好多個,swagger 2.0和open api 3.0還支援互轉,請參考:swagger2openapi

這裡先介紹基於swagger 2.0生成後端程式碼,試過open api 3.0去做,但外掛不太給力,沒有達到我想要的效果,沒法達到:基於yaml檔案生成client端、server端、springboot完整程式;

  • 滿足swagger 2.0檔案有json、yaml二種格式的,所以以後我們只要學會編寫這種yaml或json檔案編寫規範就可以對介面進行管理。

3. 使用swagger-codegen完成基於yaml檔案生成client端、server端、springboot完整程式

請先閱讀,這篇文章,寫的不錯:spring boot專案使用swagger-codegen生成服務間呼叫的jar包,百度了很多帖子,就這篇文章給了我想要的效果。

通過這種方法我可以生成一個只帶NameApi的介面的程式("interfaceOnly" : "true"),通過對這個程式的打包依賴到專案中,就可以完成對api管理,每次更新api介面只需要編寫好yaml重新生成一下jar並依賴到專案中就行,這樣還可以減少swagger相關注解的侵入性。通過這種方式只用在controller上實現對於的jar中的介面,還不需要調整service和mapper中的邏輯,service和mapper層還可以通過之前方式直接生成與資料庫互動的通用介面。

除此之外swagger-codegen還可以通過"library" : "feign"生產我們想要的客戶端程式碼(jar),這裡的客戶端程式碼就是一些封裝過的工具,可以通過指定方式去和server互動,如:sso-client.jar就是負責與sso-server進行互動的。swagger-codegen功能還有很多,這裡就