天天看點

一款超好用的神器,甩 Swagger 幾條街

事情是這樣的:今天我們公司的後端說他接口寫完了,并分享了一個接口文檔給我。用的就是 Swagger UI 自動生成的那種接口文檔,就像這種:

一款超好用的神器,甩 Swagger 幾條街

這種 Swagger UI文檔我每次看着就頭大,毛病多多

  • 檢視多級模型時要一級級點開
  • 在接口數量變多的時候非常難用,連分類菜單都沒有
  • 送出參數為 JSON 的時候不能格式化
  • 參數出錯的時候查找麻煩
  • 傳回結果不能折疊,長得沒法看

時間比較緊急,我就按照他給的文檔裡的參數與響應資料,寫到了我的前端頁面上,前端這邊簡單自測了一下就匆匆上線了。

上線完當晚就炸了。。

一款超好用的神器,甩 Swagger 幾條街

頁面上各種接口報錯:

  • 參數不存在
  • 參數類型錯誤
  • 接口不存在(是因為接口寫錯了)

老大馬上過來找我倆,但是前後端各執一詞:

  • 前端:我吊你,怎麼你分享的接口這麼多錯誤?
  • 後端:我吊你,你用之前不會測一測接口正不正常?
  • 前端:我為什麼要測?你開發的接口,你自己不測好?
  • 後端:我怎麼知道你要用什麼樣的資料!你要是稍微測一下接口,能有這麼多事?
一款超好用的神器,甩 Swagger 幾條街

歸根結底是個成本問題

這時候老大很冷靜,阻止了我們的吵架。

一款超好用的神器,甩 Swagger 幾條街

老大分析了一下這次事故的主要原因:

  • 1、後端馬虎了,一些接口沒有寫對,也忘記調試了
  • 2、時間緊,前端沒來得及完全測接口

然後老大說,這歸根結底是個成本問題。要是前後端測接口都特别簡單友善,你們這個問題就不存在了嘛!

你們現在用的線上接口文檔,功能幾乎為零。應該選一個功能更加強大的線上接口文檔工具,直接線上就把接口調了,你們是不是就不會出這些問題了。

這個工具應該具備以下功能:

  • 調試功能,前端能很友善地調試接口資料
  • 代碼生成功能,這樣前端可以少寫點代碼,提高效率同時也提高了準确性
  • 接口同步功能,接口文檔一定要是最新的代碼資訊

我們紛紛點頭,是啊是啊。

一款超好用的神器,甩 Swagger 幾條街

老大說,我最近試了一款工具,就可以零成本地解決你們這些問題!

然後他給我們看了一個神仙文檔。

就是這個!!⬇️⬇️⬇️

一款超好用的神器,甩 Swagger 幾條街

為什麼說它神仙呢?因為它滿身都是牛逼到不行的特性,比平常見到那些 API 文檔不知道厲害到哪裡去了。

一款超好用的神器,甩 Swagger 幾條街

線上調試

這個文檔是用 Apifox 做的,我之前有試用過這個工具,完全免費不限功能的,沒想到最近又有這麼多厲害的新功能出來了。

點選文檔右上角的運作按鈕,就會出現“線上運作”的子產品

一款超好用的神器,甩 Swagger 幾條街

這個界面上就能直接調試接口了!直接 1. 填參數,2. 選環境,3. 點發送,接口請求就發出去了!下面就有傳回結果!根本用不着 Postman!更不用把 API 照着抄一遍!

一款超好用的神器,甩 Swagger 幾條街

我心想,如果當時上線之前,用的是 Apifox 的話,那簡直是不會出現事故:

  • 參數不存在?我線上調試後獲得資料了,通過比對我知道哪個參數不存在
  • 參數類型錯誤?同樣的,線上調試之後,通過比對,我知道哪個參數的類型是錯的
  • 接口不存在(是因為接口寫錯了)?調試的時候就報接口不存在了,第一時間找後端~
一款超好用的神器,甩 Swagger 幾條街

自動生成

我跟老大說,這個功能看起來是很強大啊。可是要是上線時間緊,誰有功夫去搞這麼個接口文檔啊,配置起來應該很麻煩吧?

老大邪魅一笑。

一款超好用的神器,甩 Swagger 幾條街

他說,這個文檔,是自!動!生!成!的!

隻要把 Swagger 的 URL 填到 Apifox 裡面去,Apifox 就會自動導入 API 定義,然後就能生成這個好用的文檔!

後端随便改代碼,前端随時可以線上調試!

一款超好用的神器,甩 Swagger 幾條街

而且,還可以導入多個來源的 Swagger!一套接口文檔來自多個不同的後端項目也沒問題!

一款超好用的神器,甩 Swagger 幾條街

生成請求代碼

後端說,不就是一個線上調試接口嗎,也沒有到神仙的地步嘛。

老大說,你還是太年輕。

一款超好用的神器,甩 Swagger 幾條街

在這個線上文檔頁面上,還有一行熟悉的 icon。這是什麼呢?

一款超好用的神器,甩 Swagger 幾條街

自!動!生!成!代!碼!

點選對應的語言,就能直接生成請求的代碼!???

我選擇了 JavaScript 之後,居然還提供了 Fetch、Axios、Jquery 等等請求方式的代碼???

一款超好用的神器,甩 Swagger 幾條街

我直接 copy 一下代碼,粘進代碼裡就能用???

一個線上文檔,卷成這樣至于嘛???

一款超好用的神器,甩 Swagger 幾條街

生成模型代碼

老大說,别急,還沒完。

一款超好用的神器,甩 Swagger 幾條街

API 文檔嘛,都會有個“傳回響應”的子產品,就是告訴你後端吐出來的資料是什麼類型什麼長度等等。前端再寫個資料結構把這些資料接着,然後放進頁面裡去。

在這個神仙文檔裡呢,“傳回響應”裡也有個“生成代碼”。

一款超好用的神器,甩 Swagger 幾條街

我點了一下,就彈出了這個框:

一款超好用的神器,甩 Swagger 幾條街

左邊還可以選擇你生成代碼的配置,包括:程式設計語言、命名風格、校驗開啟等等。

我看了看,Java,C,C++,JS,Swift,Go,Python,TypeScript……基本上我知道的語言全都有。

怎麼着?傳回資料結構的代碼也不用寫了?複制一下粘過去就行了?

我默默翻了翻它自動生成的代碼,又關上了。

我感覺我自己寫的 Java 代碼還沒它自動生成寫的好。

一款超好用的神器,甩 Swagger 幾條街

雲端 Mock

我說老大,我明白了。我這就去下載下傳 Apifox,下個疊代我就用這個線上文檔。哦不,下個疊代我就逼後端用這個線上文檔。

老大說,急什麼。等我說完。你知道雲端 Mock 嗎?

我說,雲嘛,神仙都是要駕雲的,這很正常。

老大說你正常一點。雲端 Mock,就是在 API 文檔頁面上就直接實作 Mock 服務,虛拟一個服務端出來。

我:???

一款超好用的神器,甩 Swagger 幾條街

老大說,比如,我們要請求一個銀行的 API,銀行肯定不會讓你随便請求啊,都是要驗證身份限制次數的。用這個 Apifox 呢,你就可以直接在接口文檔上請求 Mock 資料了,也不會限制你的次數,也不會收你的錢。

我說老大,咱們是不是跳得有點快。你駕雲我跟不上的。

老大說沒有啊,我們不是在聊這個線上文檔的特性嘛。你看,這裡有測試環境、正式環境和雲端 Mock 環境,你隻要切換到雲端 Mock 環境,請求就會發給 Mock 伺服器了,跟正式環境調試一樣一樣的。

一款超好用的神器,甩 Swagger 幾條街

我:!!!!!

還可以這樣??

老大又用浏覽器打開了這個 URL(https://mock.apifox.cn/m1/1035644-0-default/users/2),說你看,直接通路 URL 就能擷取到 Mock 資料了,你們前端用起來是不是很爽?

一款超好用的神器,甩 Swagger 幾條街

我猛點頭。

一款超好用的神器,甩 Swagger 幾條街

這個時候,後端說,那是不是我們直接把常用的那些第三方 API 都做成這種能雲端 Mock 的 API 文檔,然後開發就都能直接調試第三方接口了?連 Mock 伺服器都不用架?

我:

一款超好用的神器,甩 Swagger 幾條街

API Hub

老大說,你們啊,too young too simple,sometimes naive.

給你們看個東西。

一款超好用的神器,甩 Swagger 幾條街

這個,叫做 API Hub。

一款超好用的神器,甩 Swagger 幾條街

在 Apifox 裡面,已經把這些最常用的第三方 API 都做好了!即時通訊的,電商的,查快遞的,項目管理的,統統都有!每一個都可以線上運作!生成代碼!也可以克隆到自己的項目裡,然後用雲端 Mock!

一款超好用的神器,甩 Swagger 幾條街

企業微信的 API 文檔,可以線上運作

老大說,人家都把接口文檔公開出來了,你們也好好學學人家大廠的接口是怎麼設計的。哦對了,咱們公司有接口要公開出去的話,也可以釋出到這個 API Hub。

一款超好用的神器,甩 Swagger 幾條街

老大說,好了,我說完了。你們都聽懂了嗎?

我說,懂了,明天就去跟後端對線。

一款超好用的神器,甩 Swagger 幾條街

後端說,等什麼明天!我現在就要!

Apifox

最後,老大語重心長地說,年輕人啊,還是要多學學先進技術和工具。

Apifox = Postman + Swagger + Mock + JMeter。集接口文檔工具、接口 Mock 工具、接口自動化測試工具、接口調試工具于一體,提升 10 倍研發效率。

一款超好用的神器,甩 Swagger 幾條街