在企業級的項目開發過程中,一般會采用前后端分離的開發方式,前后端通過api接口進行通信,所以接口文檔就顯得十分的重要。
目前大多數的公司都會引入Swagger來自動生成文檔,大大提高了前后端分離開發的效率。
但是在前端開發過程中還是會出現一些問題,比如:
- 由於需求的頻繁變更,接口也會相應的改變
- 多人協作時,每個人的代碼風格不同,導致service文件非常混亂,不易於維護
- 新人接手時,不清楚接口有沒有定義,導致重復定義接口
- 每次定義接口都是重復性工作,消耗鼠標鍵盤耐久
所以,如果能把這種重復性的工作交給機器做就好了,既能保證速度,也能保證質量,何樂而不為呢。
在github上找了一下這類工具,發現了umijs有一款插件叫openapi,可以實現生成service文件的功能。但是在使用過后發現這個工具存在不少問題,比如:對中文的支持不太好,如果Swagger文檔中出現了中文會報錯。而且它只支持最新的Swagger文檔規范(OAS3),公司里用的還是舊的OAS2規范。
所以,我決定自己造一個輪子。
我把這個工具分成三個步驟:
- 從Swagger文檔的url或者json中獲取OAS2/OAS3數據
- 通過OAS2/OAS3數據生成一個通用的數據結構
- 通過js模板庫把通用的數據結構轉換成service文件
生成service步驟
我把這個工具命名為openapi-tool,通過名字就可以看出,我並不想它只能做生成service的工作,他應該是一個圍繞着OpenApi的工具。所以,我加入了插件機制,並參考了Vue插件系統的設計,使得學習成本更低。通過插件系統,可以對接Mock平台,也可以做自動化接口測試等進一步提高開發效率的功能。
下面是使用openapi-tool的一個栗子:
生成的結果如下:
└── service
├── api.ts
├── login.ts
├── rule.t
└── typings.ts
可以看到,生成ts文件時會自動生成對應的類型文件,並自動引入依賴。如果想生成js文件,只需要把typescript設置為false即可。
下面是項目的github地址,歡迎提issue,如果你喜歡這個項目的話,請給我個star吧。