
最近 Apifox 這款國(guó)產(chǎn)API管理工具受到了一眾研發(fā)人員的好評(píng),免費(fèi)是其中一個(gè)緣由!但是一直使用著Swagger,Apifox比Swagger更好用嗎?有必要更換軟件嗎!正所謂實(shí)踐出真知,我將會(huì)對(duì) Swagger 和 Apifox 的功能進(jìn)行深度分析對(duì)比,這款國(guó)產(chǎn)API管理工具是否好用。


作為一名開發(fā)者,日常開發(fā)過程中除了寫業(yè)務(wù)代碼,前后端聯(lián)調(diào)更是重要的一環(huán)。但這一環(huán)卻往往是整個(gè)開發(fā)過程中最繁瑣也最累人的一環(huán)。任誰(shuí)都想早點(diǎn)下班,然而提升聯(lián)調(diào)效率并不是個(gè)純技術(shù)相關(guān)的問題,而是需要有良好工作流程的問題。
一、功能定位對(duì)比
(看看哪款工具才是接口文檔工具的王者。)
1.swagger 的功能定位
swagger 是一款 API 文檔工具,比較常用的是它的開源工具 swagger ui,swagger editor。 swagger editor接口設(shè)計(jì)、生成代碼,swagger ui生成接口文檔,可以分享給他人,在線查看接口文檔。
2.Apifox 的功能定位
Apifox 定位: Apifox=Postman+Swagger+mock+Jmeter,是一款集 API設(shè)計(jì),接口文檔管理、代碼生成、API 調(diào)試、API mock,API 自動(dòng)化為一體的接口一站式協(xié)作平臺(tái)。
也就是說,它比 swagger 的的功能要更加廣泛和齊全,不僅通過可視化界面設(shè)計(jì)接口生成接口文檔和項(xiàng)目代碼,還打通了接口數(shù)據(jù)的協(xié)作流程,一套接口數(shù)據(jù),設(shè)計(jì)出來可以給前端、測(cè)試使用,減少了再不同系統(tǒng)間切換、導(dǎo)入導(dǎo)出數(shù)據(jù)、更新維護(hù)的麻煩。
這正是解決了整個(gè)開發(fā)過程中最繁瑣也最累人的一環(huán)!

二.功能對(duì)比(接口設(shè)計(jì)功能對(duì)比)
API管理的痛點(diǎn)
API接口在設(shè)計(jì)時(shí)往往需要編寫大量的文檔,而且編寫完成之后還會(huì)經(jīng)常改動(dòng),文檔編寫維護(hù)工作量大。
接口文檔編寫好后,實(shí)際的代碼可能會(huì)與文檔有出入,這個(gè)時(shí)候文檔是不準(zhǔn)確的,文檔與代碼保持修改同步也是一個(gè)很大的工作量。隨著接口版本的迭代,接口文檔需要同步更新。有些時(shí)候接口會(huì)成為對(duì)接雙方的開發(fā)進(jìn)度瓶頸,因?yàn)榻涌谡{(diào)用會(huì)有依賴,類似app的項(xiàng)目,前端會(huì)需要調(diào)用后端接口,接口功能不實(shí)現(xiàn)會(huì)影響前端開發(fā)進(jìn)度。接口開發(fā)完以后,做接口測(cè)試不方便,特別是接口數(shù)量多,參數(shù)復(fù)雜的情況,測(cè)試工作量大。接口在版本迭代后,舊的接口常常需要做回歸測(cè)試,這個(gè)工作量也是非常大的。
swagger的接口設(shè)計(jì)功能
通過編寫代碼來生成 API 文檔,需要記憶 swagger 的常用注解規(guī)則,右側(cè)能實(shí)時(shí)預(yù)覽生成的接口文檔;
生成的接口文檔里能夠看出層級(jí)結(jié)構(gòu),但在左側(cè)的編輯區(qū)卻沒有明顯的目錄層次,因此一般只能支持簡(jiǎn)單的單個(gè)接口文檔的編寫,復(fù)雜的項(xiàng)目會(huì)變得容易出錯(cuò)和難以維護(hù)。

Apifox的接口設(shè)計(jì)功能
使用 Apifox 來設(shè)計(jì)接口,完全是可視化界面,不需要學(xué)一套專門的注解方法,只需要專注設(shè)計(jì)業(yè)務(wù)接口的規(guī)則和內(nèi)容就可以,
直接填寫請(qǐng)求方法,路徑,請(qǐng)求參數(shù)和響應(yīng)參數(shù)、保存完畢就能生成一份接口文檔。

它擁有項(xiàng)目/模塊等不同層級(jí)的目錄結(jié)構(gòu)來存儲(chǔ)接口文檔,適合項(xiàng)目層級(jí)的接口文檔編寫開發(fā)。單個(gè)接口的設(shè)計(jì)就是填寫參數(shù),然后保存。 多個(gè)接口可以保存到一個(gè)文件夾下,不同的模塊歸類到不同的文件層級(jí)中。

3.調(diào)試Api文檔功能對(duì)比
調(diào)試Api文檔的痛點(diǎn)
當(dāng)我們使用了一些由別人實(shí)現(xiàn)的API接口時(shí),該如何進(jìn)行調(diào)試呢?當(dāng)我們使用的API返回一些意想不到錯(cuò)誤時(shí),該怎么辦呢?這個(gè)問題可能是由于用戶輸入或者API本身,或者其他完全無關(guān)的內(nèi)容等引起的。調(diào)試是我們進(jìn)行定位并修復(fù)由單個(gè)API調(diào)用或一系列調(diào)用引發(fā)的問題。通常,我們可以調(diào)試我們不能完全把握的代碼,從而可以清晰地了解該部分代碼。我們?cè)谑褂肁PI時(shí),除了遇到意想不到的異常外,還有可能在解析輸出或傳遞變量時(shí)出錯(cuò)。
swagger的調(diào)試功能
swagger ui 提供了簡(jiǎn)單的調(diào)試功能,填寫參數(shù)、點(diǎn)擊按鈕可以發(fā)起接口請(qǐng)求。
除此之外沒有其他復(fù)雜的功能可以輔助調(diào)試,但實(shí)際中有很多復(fù)雜的調(diào)試需求,需要寫調(diào)試腳本,連接數(shù)據(jù)庫(kù),寫測(cè)試斷言等,這里均無法支持。
因此大多數(shù)程序員如果使用swagger 寫文檔,后期還需要將接口數(shù)據(jù)導(dǎo)入到其他調(diào)試工具調(diào)試。

Apifox的調(diào)試功能
Apifox在這個(gè)點(diǎn)我個(gè)人感覺創(chuàng)新是比較多的,它把Postman里需要寫腳本的功能都封裝成了可視化界面,直接通過填寫參數(shù)的方式去調(diào)試。


可視化界面其實(shí)會(huì)大大降低操作的門檻,寫腳本的話至少需要會(huì)一些js語(yǔ)言,而像現(xiàn)在這樣填參數(shù)的方式,不會(huì)腳本語(yǔ)言也能調(diào)試。
不過,如果你想要做一些復(fù)雜的調(diào)試,它還是保留了腳本調(diào)試功能的。 腳本調(diào)試支持第三方j(luò)s類庫(kù),支持外部腳本和語(yǔ)言。

4.導(dǎo)入導(dǎo)出接口 功能對(duì)比
swagger 的導(dǎo)入導(dǎo)出功能
swagger 支持導(dǎo)入符合open api 規(guī)范的接口數(shù)據(jù)文檔。 支持導(dǎo)出 yaml 或者 json 格式的數(shù)據(jù)。
Apifox 的導(dǎo)入導(dǎo)出功能
Apifox 導(dǎo)出項(xiàng)目
如果想要將項(xiàng)目遷移到新的接口管理工具中,需要用到項(xiàng)目的整體導(dǎo)出功能。在Apifox中,支持導(dǎo)出swagger格式、html、md、apifox 格式的項(xiàng)目數(shù)據(jù),以供導(dǎo)入其他工具中使用。

2. Apifox 導(dǎo)入項(xiàng)目 Apifox 支持項(xiàng)目無痛遷移到該軟件,目前除了支持swagger 、postman格式的,還支持多個(gè)國(guó)產(chǎn)的開源工具的數(shù)據(jù)格式,如RAP 和yapi等。

5. 價(jià)格對(duì)比
swagger 的價(jià)格
swagger 分為開源的 swagger editor 和swagger ui,以及 整合為一體的swagger hub,swagger hub的免費(fèi)版本使用人數(shù)限制1人,只能添加3個(gè)APIs,不支持協(xié)同功能。 付費(fèi)版本價(jià)格見下表,還是非常高昂的價(jià)格:

Apifox 的價(jià)格
從收費(fèi)模式上看,Apifox是公網(wǎng)版本不收費(fèi),私有化部署收費(fèi)。
總結(jié),整體體驗(yàn)下來,類似Swagger的工具,只能說Apifox更全面,讓我找到一個(gè)合適的技術(shù)工具提高我們的效率??梢宰屛覀儚奈臋n書寫和接口對(duì)接工作中解脫出來,更加專注于代碼的書寫和業(yè)務(wù)邏輯的梳理,被接口對(duì)接煩透了的你不妨嘗試一下,你會(huì)發(fā)現(xiàn)它像一個(gè)保姆一樣為你做了所有該做的事情。

6.其他功能
API Hub
作為一個(gè)coder,最終的就是進(jìn)行分享,Apifox官網(wǎng)的API Hub可以讓我們方便的查看別人的項(xiàng)目進(jìn)行學(xué)習(xí),同時(shí)如果我們做了一份自認(rèn)為完美的文檔也可以進(jìn)行分享,分享才能使我們更加的強(qiáng)大??梢栽鰪?qiáng)我們的輸出能力。

7.總結(jié)
Apifox 的整體功能比 swagger 豐富,支持一整個(gè)團(tuán)隊(duì)的協(xié)作,而且免費(fèi)國(guó)產(chǎn)軟件。類似swagger的工具,只能說Apifox更全面,讓我找到一個(gè)合適的技術(shù)工具提高我們的效率。Apifox比Swagger更好用嗎?這個(gè)問題大家都心里有數(shù)吧!