一、API管理的痛點
- API接口在設(shè)計時往往需要編寫大量的文檔,而且編寫完成之后還會經(jīng)常改動,文檔編寫維護(hù)工作量大。
- 接口文檔編寫好后,實際的代碼可能會與文檔有出入,這個時候文檔是不準(zhǔn)確的,文檔與代碼保持修改同步也是一個很大的工作量。
- 隨著接口版本的迭代,接口文檔需要同步更新。
- 有些時候接口會成為對接雙方的開發(fā)進(jìn)度瓶頸,因為接口調(diào)用會有依賴,類似app的項目,前端會需要調(diào)用后端接口,接口功能不實現(xiàn)會影響前端開發(fā)進(jìn)度。
- 接口開發(fā)完以后,做接口測試不方便,特別是接口數(shù)量多,參數(shù)復(fù)雜的情況,測試工作量大。
- 接口在版本迭代后,舊的接口常常需要做回歸測試,這個工作量也是非常大的。
二、解決思路
- API接口管理系統(tǒng)化或平臺化,可以直接在可視化API管理界面上方便的維護(hù)接口。而且最好有版本管理和權(quán)限管理。
- 可視化維護(hù)好的接口可以直接生成對應(yīng)語言的代碼,節(jié)省代碼開發(fā)量。代碼有變更時,最好還可以與界面上的接口進(jìn)行同步。
- API界面能夠提供模擬接口實現(xiàn)方的調(diào)用功能,這樣就能解耦接口調(diào)用方與服務(wù)方的強(qiáng)進(jìn)度依賴,可以先按API接口的消費方基于接口管理系統(tǒng)或平臺模擬調(diào)用,待服務(wù)方準(zhǔn)備好后再真實調(diào)用。而且這里的模擬最好能做到自定義規(guī)則的模擬返回。
- 接口實際開發(fā)完成后,可以根據(jù)接口管理系統(tǒng)或平臺的可視化測試界面,直接進(jìn)行接口的實際調(diào)用測試。
- 接口平臺能夠支持自動化測試,可以自定義測試案例,然后自動化測試并生成可視化報告。這個功能在舊版本接口復(fù)測時非常有用。
當(dāng)然實際落到系統(tǒng)的話,除了上述的核心功能,還有些關(guān)聯(lián)功能。大致需要的全部功能如下圖:

三、解決方案
API接口管理應(yīng)該是大部分公司都會面臨的一個管理問題,因此也有很多現(xiàn)成的輪子可以直接拿來用。
這里結(jié)合我使用的經(jīng)驗與找到的案例簡單介紹下:
3.1 國內(nèi)解決方案
eoLinker
官網(wǎng)地址:https://www.eolinker.com
這是一家國內(nèi)的在線API管理平臺,同時也提供開源精簡版本。該平臺提供的功能非常全面,除了代碼生成與同步這個功能外,基本涵蓋了前面提到的解決思路中的所有功能。RAP
官網(wǎng)地址:http://rapapi.org/org/index.do
這是阿里巴巴公司的團(tuán)隊做的一個開源的API管理系統(tǒng),功能也還比較全面。除了沒有代碼生成與同步、自動化測試、狀態(tài)碼管理功能,解決思路中提到的功能基本都有。CrapApi
官網(wǎng)地址:http://api.crap.cn/
這是國內(nèi)的一個開源的API管理系統(tǒng),提供了文檔管理、項目/組織管理相關(guān)的功能,在測試管理與代碼管理這塊是缺失的。
3.2 國外解決方案
SwaggerHub
官網(wǎng)地址:https://swaggerhub.com/
這是國外的一個非常有名的基于Swagger的一個在線平臺,提供了API全生命周期管理的工具集,基本涵蓋了解決思路中提到的全部功能。Swagger是一個開源的設(shè)計與描述Rest API的框架,它有自定義的接口規(guī)范和很多非常實用的工具集,比如Swagger Editor可以用來設(shè)計接口,Swagger Codegen可以用來生成代碼和測試樁,Swagger UI可以用來生成可視化接口文檔等。apiary
官網(wǎng)地址:https://apiary.io/
這是Oracle公司收購的一家API管理的公司,也是一個在線的API管理平臺,除了代碼生成功能,基本提供了解決思路中提到的所有功能。它有自己定義的接口描述語言API Blueprint。apigee
官網(wǎng)地址:http://apistudio.io/
這個也是一個基于Swagger的在線API管理平臺,可以做接口管理、接口模擬測試。整體的功能相對比較簡單。
3.3. 綜合比較
由于上述的平臺我沒有全部深度使用過,所以就功能易用度不作評價,基于各平臺的介紹與簡單使用做下分析比較。
從設(shè)計上來說,國外的Swagger和apiary都有統(tǒng)一的開源接口規(guī)范,這樣就有了搭建生態(tài)的前提,然后創(chuàng)建對應(yīng)的工具集就會非常實用有效。這里相比而言Swagger的生態(tài)又更加成熟些。
從功能完備度或商業(yè)化程度上來說,國內(nèi)的eoLinker、RAP,國外的Swagger、apiary都還不錯;其中以eoLinker、Swagger最為突出。
綜合比較下來,個人覺得Swagger是在API管理這方面做得最好的,商用的話eoLinker可以考慮,如果考慮到成本或者需要開源的系統(tǒng),那RAP系統(tǒng)不錯。當(dāng)然實際需求不同公司是千差萬別的,最適合的才是最好的,至于哪個更適合就需要自己根據(jù)實際情況去比較了。
四、思路擴(kuò)展
API接口管理還是很大的應(yīng)用場景的,特別是移動端開發(fā)、前后端分離、微服務(wù)化的情況下。這方面不管是做開源、還是做商用版本,還是大有可為的。
而對于開源版本,想做成生態(tài)定義個統(tǒng)一規(guī)范,再基于規(guī)范做工具集、集成平臺就會非常利于發(fā)展,就像Swagger一樣。另外還可以支持與其它接口關(guān)聯(lián)的功能動態(tài)集成,這樣功能就會越來越強(qiáng)大。
而對于商用版本,功能就需要非常完備,數(shù)據(jù)安全性和權(quán)限管理這些非核心功能也需要做得很好才行,另外最好半開源或階梯性收費,就像eoLinker一樣。不過eoLinker目前還沒做到代碼生成與同步,這塊也是接口管理很大的一個痛點與難點。
當(dāng)然很多大公司資源比較足,而且需求也有更多的定制要求,這樣自開發(fā)肯定是更加好的;而小公司選用開源的版本或基于開源版本做定制修改,就會更加劃算。
五、擴(kuò)展介紹
API測試的工具
- postman
官網(wǎng)地址:https://www.getpostman.com
有 Mac, Windows, Linux, and Chrome 各平臺對應(yīng)的軟件,可以支持API接口的記錄和測試。另外也支持接口的文檔化與監(jiān)控。 - soapui
官網(wǎng)地址:https://www.soapui.org/
自稱是最好的REST & SOAP 測試工具,跟Swagger一樣都是smartbear這個公司做的產(chǎn)品??梢灾С肿鼋涌诘墓δ軠y試、壓力測試、安全測試、模擬測試。