推薦這款接口管理神器,集成了Swagger和postman,mock的功能
前情簡介:親身經(jīng)歷節(jié)選
Code: 403 將我踢飛
彼時(shí)正處公司切換中臺系統(tǒng)的技術(shù)棧,以半個(gè)sprint周期為單位進(jìn)行著業(yè)務(wù)模塊的遷移。每一個(gè)業(yè)務(wù)模塊驗(yàn)證上線后就會(huì)下架 老爺車 中相對應(yīng)的部分并通知員工基于新的中臺系統(tǒng)進(jìn)行辦公。
彼時(shí)又恰逢數(shù)據(jù)庫擴(kuò)容和分庫分表,接口流轉(zhuǎn)偶有故障為日常開發(fā)增添了麻煩。在這個(gè)背景下,我當(dāng)時(shí)負(fù)責(zé) 反饋建議 模塊的遷移,也就是非常多的 type,status 以 Tag,Progress 和統(tǒng)計(jì)數(shù)據(jù)可視化PieChart的展現(xiàn)。
我瀟灑的使用Antd Protable 以及 AntV,并結(jié)合了Swagger 文檔以2個(gè)小時(shí)的時(shí)間,定義好了各種column 并滿懷期待在控制臺輸入了
yarn dev
登錄系統(tǒng),選擇子系統(tǒng),進(jìn)入頁面。頁面正常,控制臺沒有紅色,唯一不足就是數(shù)據(jù)少于10條。無法驗(yàn)證 分頁 和 PieChart 。這時(shí)我坐我對面的后端小哥表示,DEV數(shù)據(jù)少,你去UAT。
為了讓產(chǎn)品經(jīng)理驗(yàn)收時(shí)能看到各種數(shù)據(jù)的展現(xiàn)。
一番操作,尷尬的事情出現(xiàn)了,成功進(jìn)入系統(tǒng)后卻在點(diǎn)擊頁面時(shí)被踢了出來。
一瞬間,腦袋嗡嗡。思考著以下可能之一 :跨域| 后臺角色權(quán)限沒配置| 請求路徑錯(cuò)誤 | 請求方法錯(cuò)誤 | 鑒權(quán)失敗
后端小哥語錄 :
- "我這邊可以的,你再試試 ?"
- "你是不是 Token 過期了 "
- "你把 raw請求 發(fā)給我"
- "你發(fā)一下你的賬號 "
最后的最后,原來后端小哥還沒把 對應(yīng)分支 推上去。
濃眉大眼的 Swagger 把我欺騙
- 文檔 integer,實(shí)際 string 。
- 表示狀態(tài)的 0|1|2 ,某次需求去掉了2 剩下了 0| 1 , 但業(yè)務(wù)邏輯上卻以 0代表1,1代表2。
- 多年以來,將錯(cuò)就錯(cuò)之潛規(guī)則。數(shù)據(jù)庫的數(shù)據(jù)長久以來用混了標(biāo)識卻沒有備注,新人摸不著腦袋。
- 不一致/還沒實(shí)現(xiàn) 的 接口路徑/數(shù)據(jù)結(jié)構(gòu),根據(jù)文檔寫好解析代碼才發(fā)現(xiàn),結(jié)構(gòu)不對或缺少字段。簡而言之就是各種的 文檔錯(cuò)誤/文檔過期。
根據(jù)復(fù)雜度守恒原理,有沒有更好的解決辦法呢?最好是那種 鼠標(biāo)點(diǎn)點(diǎn) 級別的。
工作提效的版本答案
"永遠(yuǎn)不要相信前端傳過來的參數(shù)" 和 "永遠(yuǎn)不要相信后端的接口" 都被說爛了,就如同 ARMS 的警報(bào) 不時(shí)讓人精神緊繃。
拋開各種無法預(yù)料的事情,我們能否先從能掌控的事情下手?譬如保證文檔的 一致性 和 時(shí)效性 ,或許這本不該是個(gè)問題,但相信工作多年的程序員都 人之常情,懂的都懂。
然而 我們是程序員!我們使用 別人的 工具!
為什么是Apifox
一款優(yōu)秀的產(chǎn)品應(yīng)該符合用戶的直覺,當(dāng)用戶某次思考是否有某個(gè)功能(非一般業(yè)務(wù)場景)卻又恰好被提供的時(shí)候,絕對很能贏得用戶的青睞。Apifox便是這么一款優(yōu)秀的提效工具。
Apifox是 API 文檔、API 調(diào)試、API Mock、API 自動(dòng)化測試一體化協(xié)作平臺。節(jié)省研發(fā)團(tuán)隊(duì)的每一分鐘!
先簡單說明使用Apifox的開發(fā)流程
- 設(shè)計(jì)接口 零配置的 Mock 服務(wù) 。
- 前端開發(fā)人員即可基于該Mock服務(wù)開發(fā)。
- 后端實(shí)現(xiàn)該接口。
最值得稱道的是,項(xiàng)目內(nèi)接口是同步更改的,接口文檔也是自動(dòng)生成,完全不入侵代碼。這就意味著開發(fā)人員不會(huì)再遇見我曾經(jīng)的郁悶。至此,已經(jīng)滿足了一個(gè)項(xiàng)目內(nèi)可以成功請求并保證 文檔同步 和 數(shù)據(jù)結(jié)構(gòu)同步 的Mock接口的樸素愿望。后期任何改動(dòng)亦變得輕松高效,簡直 鼠標(biāo)點(diǎn)點(diǎn) 。
橫向?qū)Ρ萈ostman,常見功能和使用習(xí)慣保持了一致,還做了非常多的創(chuàng)新,來提升開發(fā)人員的效率。
1、接口支持“用例管理”
通常一個(gè)接口會(huì)有多種情況用例,比如 正確用例 參數(shù)錯(cuò)誤用例 數(shù)據(jù)為空用例 不同數(shù)據(jù)狀態(tài)用例。定義接口的時(shí)候定義好這些不同狀態(tài)的用例,接口調(diào)試的時(shí)候直接運(yùn)行,非常高效。
2、“數(shù)據(jù)模型”定義、引用
可以獨(dú)立定義數(shù)據(jù)模型,接口定義時(shí)可以直接引用數(shù)據(jù)模型,數(shù)據(jù)模型之間也可以相互引用。同樣的數(shù)據(jù)結(jié)構(gòu),只需要定義一次即可多處使用;修改的時(shí)候只需要修改一處,多處實(shí)時(shí)更新,避免不一致。
3、調(diào)試時(shí)“自動(dòng)校驗(yàn)”數(shù)據(jù)結(jié)構(gòu)
使用 Apifox 調(diào)試接口的時(shí)候,系統(tǒng)會(huì)根據(jù)接口文檔里的定義,自動(dòng)校驗(yàn)返回的數(shù)據(jù)結(jié)構(gòu)是否正確,無需通過肉眼識別,也無需手動(dòng)寫斷言腳本檢測,非常高效!
Apifox 自動(dòng)校驗(yàn)數(shù)據(jù)結(jié)構(gòu)
4、“可視化”設(shè)置斷言
設(shè)置斷言:
Apifox 設(shè)置斷言
運(yùn)行后,查看斷言結(jié)果:
結(jié)果
5、“可視化”設(shè)置提取變量
6、支持?jǐn)?shù)據(jù)庫操作
7、“零配置”Mock 出非常人性化的數(shù)據(jù)
先放一張圖對比下 Apifox 和其他同類工具 零配置 mock 出來的數(shù)據(jù)效果:
Apifox Mock 數(shù)據(jù)結(jié)果對比同類工具
可以看出 Apifox 零配置 Mock 出來的數(shù)據(jù)和真實(shí)情況是非常接近的,前端開發(fā)可以直接使用,而無需再手動(dòng)寫 mock 規(guī)則。
Apifox 如何做到高效率、零配置生成非常人性化的 mock 數(shù)據(jù)
- Apifox 根據(jù)接口定義里的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型,自動(dòng)生成 mock 規(guī)則。
- Apifox 內(nèi)置智能 mock 規(guī)則庫,根據(jù)字段名、字段數(shù)據(jù)類型,智能優(yōu)化自動(dòng)生成的 mock 規(guī)則。如:名稱包含字符串image的string類型字段,自動(dòng) mock 出一個(gè)圖片地址 URL;包含字符串time的string類型字段,自動(dòng) mock 出一個(gè)時(shí)間字符串;包含字符串city的string類型字段,自動(dòng) mock 出一個(gè)城市名。
- Apifox 根據(jù)內(nèi)置規(guī)則,可自動(dòng)識別出圖片、頭像、用戶名、手機(jī)號、網(wǎng)址、日期、時(shí)間、時(shí)間戳、郵箱、省份、城市、地址、IP 等字段,從而 Mock 出非常人性化的數(shù)據(jù)。
- 除了內(nèi)置 mock 規(guī)則,用戶還可以自定義規(guī)則庫,滿足各種個(gè)性化需求。支持使用 正則表達(dá)式、通配符 來匹配字段名自定義 mock 規(guī)則。
8、生成在線接口文檔
Apifox 項(xiàng)目可“在線分享” API 文檔,分享出去的 API 文檔可設(shè)置為公開或需要密碼訪問,非常方便與外部團(tuán)隊(duì)協(xié)作。
體驗(yàn)地址:
?? https://www.apifox.cn/apidoc/shared-ce387612-cfdb-478a-b604-b96d1dbc511 b/api-5041285 ??
9、代碼自動(dòng)生成
根據(jù)接口模型定義,自動(dòng)生成各種語言/框架(如 TypeScript、Java、Go、Swift、ObjectiveC、Kotlin、Dart、C++、C#、Rust 等)的業(yè)務(wù)代碼(如 Model、Controller、單元測試代碼等)和接口請求代碼。目前 Apifox 支持 130 種語言及框架的代碼自動(dòng)生成。
更重要的是:你可以通過自定義代碼模板來生成符合自己團(tuán)隊(duì)的架構(gòu)規(guī)范的代碼,滿足各種個(gè)性化的需求。
10、導(dǎo)入、導(dǎo)出
支持導(dǎo)出 OpenApi (Swagger)、Markdown、Html 等數(shù)據(jù)格式,因?yàn)榭梢詫?dǎo)出OpenApi格式數(shù)據(jù),所以你可以利用 OpenApi (Swagger) 豐富的生態(tài)工具完成各種接口相關(guān)的事情。
支持導(dǎo)入 OpenApi (Swagger)、Postman、HAR、RAML、RAP2、YApi、Eolinker、NEI、DOClever、ApiPost 、Apizza 、ShowDoc、API Blueprint、I/O Docs、WADL、Google Discovery等數(shù)據(jù)格式,方便舊項(xiàng)目遷移。
貼心為你
初次登陸時(shí),Apifox 會(huì)默認(rèn)提供一個(gè)示例項(xiàng)目進(jìn)行體驗(yàn),整體操作下來非常順暢,上手極其簡單,以后開發(fā)項(xiàng)目想調(diào)用第三方Api時(shí)方便多了。
寫在最后
限于篇幅無法介紹更多,希望有興趣的小伙伴可以前往 Apifox 官網(wǎng) 親自體驗(yàn),熟悉的 愛你的VUE 風(fēng)格
一名瀟灑的程序員必然要懂得提高開發(fā)效率,這樣才能保證產(chǎn)出之余騰出時(shí)間 下班干飯 技術(shù)精進(jìn)!
與諸君共勉!