全手打原創,轉載請標明出處:https://www.cnblogs.com/dreamsqin/p/11972789.html,多謝,=。=~
背景描述
前后端分離已成為互聯網項目開發的業界標准使用方式,有效解耦使得后端一套接口可以同時提供給 web端和移動端使用,大大提高了開發效率。但與此同時,也帶來了前端UI依賴后端數據的問題,在后端接口沒有開發完成之前,前端需要根據定義的接口規范模擬數據。這個問題看似簡單,但實際上在開發過程中,會是一個比較頭疼的問題。
現狀分析
現今在不使用API管理工具的前提下,基於前端的解決方案主要是在業務代碼里先根據接口定義寫一套模擬數據,或者基於Mockjs通過攔截XHR的方式實現。而基於后端的解決方案主要是先寫一套測試數據的接口,提供給前端調用,等接口開發完成之后,再進行切換。上述解決方案存在以下問題:
1. 影響實際的業務代碼(原邏輯代碼與模擬數據代碼的注釋切換);
2. 后端接口數據結構變動,更新滯后(無法及時反饋給前端開發者);
3.不易模擬復雜情況(如接口響應時間,類型繁多的數據字段:郵箱、手機號等);
4.不易模擬特殊情況(如數據出錯、數據為空的情況);
5. 模擬數據無法復用(項目發布后接口模擬數據無記錄,后續即使遇到相同接口也無法復用);
API管理工具對比
針對上述現狀,API管理工具相繼出現,一方面起到鏈接前后端開發人員的作用,另一方面也可以作為傳統的接口文檔使用,且比文檔的實時性更強。由於接口管理需求各有不同,導致API管理工具功能各不相同,下面根據我們的需求提取8個關鍵特征對常見接口管理工具進行橫向對比:
YApi | Rap | Nei | eolinker | Paw | Postman | Easy-Mock | |
---|---|---|---|---|---|---|---|
文檔管理 | √ | √ | √ | √ | 乄 | 乄 | × |
Mock | √ | √ | √ | √ | × | × | √ |
接口調試 | √ | × | √ | √ | √ | √ | × |
自動化測試 | √ | × | √ | √ | × | √ | × |
插件機制 | √ | × | × | × | × | × | × |
開源 | √ | √ | × | × | × | × | × |
本地部署 | √ | √ | × | 乄 | √ | √ | × |
學習成本低 | √ | √ | √ | √ | 乄 | 乄 | √ |
1、RAP是我們在使用YApi之前的接口管理工具,由阿里媽媽 MUX 團隊於2013年推出。具備接口管理的常用功能,但不支持接口測試,其中常用功能由我們二次開發實現,維護成本高。可以實現數據Mock,但功能單一,需自行撰寫模擬代碼,操作不便,該功能基本閑置。
2、Nei是網易前端事業部的產品,專注做 saas 服務,功能全面,但沒有開源版本,也不支持本地部署,出於安全考慮我們不會把公司機密的接口數據放到第三方平台。
3、eolinker是銀雲信息科技的一款產品,與我們的需求匹配度高,但致力於在線API接口管理服務供應。功能按免費版和收費版區分,在安全問題上與Nei存在同樣問題。
4、Paw與Postman類似,主要用於后端接口測試。Paw僅支持Mac平台,存在平台局限性。在文檔管理上雖然可以通過導出導入共享,但時效性差,存在更新不及時的問題。對於前端急需的response數據mock功能不支持。
5、Easy-Mock是大搜車無線團隊的產品,其定位是接口數據的模擬,解決前端依賴后端接口數據的問題,在同類產品中 mock 服務做得比較好,但功能單一,無法滿足我們現在的需求。
通過一系列對比,最終選擇Yapi作為我們的接口管理工具。YApi是由去哪網前端團隊開源的一款接口管理工具,功能強大,可以輕松內網部署。同時支持docker部署,使用成本低,安全性能高。
功能描述
權限管理
由於接口管理操作頻繁,傳統的金字塔管理模式中層層審批嚴重影響開發效率,所以YApi 采用扁平化管理模式,其中超級管理員擁有最高權限,並將權限分配給若干組長(包括分組組長和項目組長),未被加入分組和項目的用戶稱為游客。權限一覽表如下:
項目管理
創建分組后,可在分組中新建項目。
接口
接口列表:進行接口管理;
測試集合:測試用例管理,方便后續進行自動化測試,自動化測試過程可參見下圖流程;
動態
查看該項目下接口的變更動態,可以具體到變更人、變更時間、變更接口、變更操作(改動詳情);
成員管理
控制成員的新增、刪除、郵件接收、角色權限
數據管理
支持數據的導入導出,目前數據導入格式支持:Postman、HAR、Swagger、json;導出格式支持:html、markdown、json、swaggerjson。
設置
項目配置:項目基本信息配置,這里可以總控是否開啟項目中接口變動的郵件通知;
環境配置:配置項目接口測試的后端環境,支持添加多個環境;
請求配置:可以通過自定義 js 腳本方式改變請求的參數和返回的 response 數據;
token配置:每個項目都有唯一的標識 token,用戶可以使用這個 token 值來請求 openapi;
全局mock腳本:方便用戶在項目層面上全局設置公共的mock數據,例如全局接口返回code:0;
Wiki
項目描述信息
項目管理界面如下:
接口管理
創建項目后,可在項目中新建接口。
預覽
查看接口信息(包括基本信息、請求參數、返回數據)
編輯
接口管理的主體,用於請求參數和返回數據的設置與可視化mock,支持常用數據類型string、number、array、object、boolean、integer的模擬,其中字段業務類型支持47種,例如@image、@url、@id、@datetime、@email、@province等。
還可對字段進行高級配置,包括默認值、長度控制、大小控制、正則過濾、枚舉等。
運行
針對單個接口的個性化測試,可將測試配置保存至測試集合。
高級Mock
Mock 期望根據設置的請求過濾規則,返回期望數據;
自定義 Mock 腳本可以根據用戶請求的參數修改返回內容;
接口管理界面如下:
內網部署
環境要求
1、nodejs(7.6+)
2、mongodb(2.6+)
3、git
本機環境如下:
##### 安裝yapi-cli yapi-cli工具可視化部署:
npm install -g yapi-cli --registry https://registry.npm.taobao.org
##### 可視化部署yapi 啟動可視化部署程序:
yapi server
內網郵箱配置
內網郵箱配置如下(config.json):
##### 變更郵件通知如下:
總結
本文首先就前后端分離開發現狀存在的問題進行分析,表明其中亟待解決的問題點並引出API管理工具使用的重要性。其次,提取我們需求中的特征點對目前常用API管理工具進行了橫向對比,表明Yapi選型的緣由。隨后對YApi常用功能點進行描述,總結了各個功能模塊的主要作用。最后提供了詳細的內網部署方案以及郵箱配置教程。
參考資料
YApi官方教程:https://yapi.ymfe.org/documents/index.html
YApi git地址:https://github.com/ymfe/yapi