事情是這樣的:今天我們公司的後端說他接口寫完了,并分享了一個接口文檔給我。用的就是 Swagger UI 自動生成的那種接口文檔,就像這種:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMzkTM3cTZyMTZlZmYkRWYyYzX0UjNwIjM4EzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
這種 Swagger UI文檔我每次看着就頭大,毛病多多
- 檢視多級模型時要一級級點開
- 在接口數量變多的時候非常難用,連分類菜單都沒有
- 送出參數為 JSON 的時候不能格式化
- 參數出錯的時候查找麻煩
- 傳回結果不能折疊,長得沒法看
時間比較緊急,我就按照他給的文檔裡的參數與響應資料,寫到了我的前端頁面上,前端這邊簡單自測了一下就匆匆上線了。
上線完當晚就炸了。。
頁面上各種接口報錯:
- 參數不存在
- 參數類型錯誤
- 接口不存在(是因為接口寫錯了)
老大馬上過來找我倆,但是前後端各執一詞:
- 前端:我吊你,怎麼你分享的接口這麼多錯誤?
- 後端:我吊你,你用之前不會測一測接口正不正常?
- 前端:我為什麼要測?你開發的接口,你自己不測好?
- 後端:我怎麼知道你要用什麼樣的資料!你要是稍微測一下接口,能有這麼多事?
歸根結底是個成本問題
這時候老大很冷靜,阻止了我們的吵架。
老大分析了一下這次事故的主要原因:
- 1、後端馬虎了,一些接口沒有寫對,也忘記調試了
- 2、時間緊,前端沒來得及完全測接口
然後老大說,這歸根結底是個成本問題。要是前後端測接口都特别簡單友善,你們這個問題就不存在了嘛!
你們現在用的線上接口文檔,功能幾乎為零。應該選一個功能更加強大的線上接口文檔工具,直接線上就把接口調了,你們是不是就不會出這些問題了。
這個工具應該具備以下功能:
- 調試功能,前端能很友善地調試接口資料
- 代碼生成功能,這樣前端可以少寫點代碼,提高效率同時也提高了準确性
- 接口同步功能,接口文檔一定要是最新的代碼資訊
我們紛紛點頭,是啊是啊。
老大說,我最近試了一款工具,就可以零成本地解決你們這些問題!
然後他給我們看了一個神仙文檔。
就是這個!!⬇️⬇️⬇️
為什麼說它神仙呢?因為它滿身都是牛逼到不行的特性,比平常見到那些 API 文檔不知道厲害到哪裡去了。
線上調試
這個文檔是用 Apifox 做的,我之前有試用過這個工具,完全免費不限功能的,沒想到最近又有這麼多厲害的新功能出來了。
點選文檔右上角的運作按鈕,就會出現“線上運作”的子產品
這個界面上就能直接調試接口了!直接 1. 填參數,2. 選環境,3. 點發送,接口請求就發出去了!下面就有傳回結果!根本用不着 Postman!更不用把 API 照着抄一遍!
我心想,如果當時上線之前,用的是 Apifox 的話,那簡直是不會出現事故:
- 參數不存在?我線上調試後獲得資料了,通過比對我知道哪個參數不存在
- 參數類型錯誤?同樣的,線上調試之後,通過比對,我知道哪個參數的類型是錯的
- 接口不存在(是因為接口寫錯了)?調試的時候就報接口不存在了,第一時間找後端~
自動生成
我跟老大說,這個功能看起來是很強大啊。可是要是上線時間緊,誰有功夫去搞這麼個接口文檔啊,配置起來應該很麻煩吧?
老大邪魅一笑。
他說,這個文檔,是自!動!生!成!的!
隻要把 Swagger 的 URL 填到 Apifox 裡面去,Apifox 就會自動導入 API 定義,然後就能生成這個好用的文檔!
後端随便改代碼,前端随時可以線上調試!
而且,還可以導入多個來源的 Swagger!一套接口文檔來自多個不同的後端項目也沒問題!
生成請求代碼
後端說,不就是一個線上調試接口嗎,也沒有到神仙的地步嘛。
老大說,你還是太年輕。
在這個線上文檔頁面上,還有一行熟悉的 icon。這是什麼呢?
自!動!生!成!代!碼!
點選對應的語言,就能直接生成請求的代碼!???
我選擇了 JavaScript 之後,居然還提供了 Fetch、Axios、Jquery 等等請求方式的代碼???
我直接 copy 一下代碼,粘進代碼裡就能用???
一個線上文檔,卷成這樣至于嘛???
生成模型代碼
老大說,别急,還沒完。
API 文檔嘛,都會有個“傳回響應”的子產品,就是告訴你後端吐出來的資料是什麼類型什麼長度等等。前端再寫個資料結構把這些資料接着,然後放進頁面裡去。
在這個神仙文檔裡呢,“傳回響應”裡也有個“生成代碼”。
我點了一下,就彈出了這個框:
左邊還可以選擇你生成代碼的配置,包括:程式設計語言、命名風格、校驗開啟等等。
我看了看,Java,C,C++,JS,Swift,Go,Python,TypeScript……基本上我知道的語言全都有。
怎麼着?傳回資料結構的代碼也不用寫了?複制一下粘過去就行了?
我默默翻了翻它自動生成的代碼,又關上了。
我感覺我自己寫的 Java 代碼還沒它自動生成寫的好。
雲端 Mock
我說老大,我明白了。我這就去下載下傳 Apifox,下個疊代我就用這個線上文檔。哦不,下個疊代我就逼後端用這個線上文檔。
老大說,急什麼。等我說完。你知道雲端 Mock 嗎?
我說,雲嘛,神仙都是要駕雲的,這很正常。
老大說你正常一點。雲端 Mock,就是在 API 文檔頁面上就直接實作 Mock 服務,虛拟一個服務端出來。
我:???
老大說,比如,我們要請求一個銀行的 API,銀行肯定不會讓你随便請求啊,都是要驗證身份限制次數的。用這個 Apifox 呢,你就可以直接在接口文檔上請求 Mock 資料了,也不會限制你的次數,也不會收你的錢。
我說老大,咱們是不是跳得有點快。你駕雲我跟不上的。
老大說沒有啊,我們不是在聊這個線上文檔的特性嘛。你看,這裡有測試環境、正式環境和雲端 Mock 環境,你隻要切換到雲端 Mock 環境,請求就會發給 Mock 伺服器了,跟正式環境調試一樣一樣的。
我:!!!!!
還可以這樣??
老大又用浏覽器打開了這個 URL(https://mock.apifox.cn/m1/1035644-0-default/users/2),說你看,直接通路 URL 就能擷取到 Mock 資料了,你們前端用起來是不是很爽?
我猛點頭。
這個時候,後端說,那是不是我們直接把常用的那些第三方 API 都做成這種能雲端 Mock 的 API 文檔,然後開發就都能直接調試第三方接口了?連 Mock 伺服器都不用架?
我:
API Hub
老大說,你們啊,too young too simple,sometimes naive.
給你們看個東西。
這個,叫做 API Hub。
在 Apifox 裡面,已經把這些最常用的第三方 API 都做好了!即時通訊的,電商的,查快遞的,項目管理的,統統都有!每一個都可以線上運作!生成代碼!也可以克隆到自己的項目裡,然後用雲端 Mock!
企業微信的 API 文檔,可以線上運作
老大說,人家都把接口文檔公開出來了,你們也好好學學人家大廠的接口是怎麼設計的。哦對了,咱們公司有接口要公開出去的話,也可以釋出到這個 API Hub。
老大說,好了,我說完了。你們都聽懂了嗎?
我說,懂了,明天就去跟後端對線。
後端說,等什麼明天!我現在就要!
Apifox
最後,老大語重心長地說,年輕人啊,還是要多學學先進技術和工具。
Apifox = Postman + Swagger + Mock + JMeter。集接口文檔工具、接口 Mock 工具、接口自動化測試工具、接口調試工具于一體,提升 10 倍研發效率。