前言
在日常的開發(fā)模式里,前端負責頁面和動態(tài)腳本的處理,服務(wù)端負責業(yè)務(wù)邏輯和接口的實現(xiàn)。當前端需要服務(wù)端提供的接口實現(xiàn)動態(tài)數(shù)據(jù)展示和交互時,服務(wù)端完成接口開發(fā)后會提供一個接口文檔給到前端按照文檔規(guī)范再進行開發(fā)。這樣模式下往往會出現(xiàn)兩種情況:一種是往前端開發(fā)的進度往與服務(wù)端開發(fā)的進度不會完全同步,這就存在了一方等待另一方的情況,這多少會影響整體項目開發(fā)進度;另一種就是當前端對接不同的服務(wù)端人員所開發(fā)的接口,如果沒有了統(tǒng)一的接口文檔規(guī)范,每個人輸出的接口文檔都不盡相同,在后期對項目接口的更新和維護會是很大的時間成本。
所以很有必要有一個前后端通用的接口管理平臺,簡化接口對接和維護的流程。前后端可以通過接口管理平臺,制定接口數(shù)據(jù)和格式,然后通過模擬數(shù)據(jù)生成假接口,前后端再各自獨立開發(fā),直至雙方都開發(fā)完成后對接真實接口數(shù)據(jù)進行微調(diào)即可。并且通過接口管理平臺,開發(fā)人員可以更便捷地管理項目所有接口數(shù)據(jù)。
這里本文將主要認識學(xué)習(xí)一下目前國內(nèi)開源較火的接口管理平臺 YApi,看如何使用它幫助我們提高開發(fā)效率和便捷對接口的管理。
本文不會描述 YApi 的安裝部署過程,想要詳細了解如何部署YApi可以參見文末提供的參考鏈接:YApi 安裝部署,使用 Docker 構(gòu)建 Yapi
YApi 介紹
YApi 是一個可本地部署的、打通前后端及QA的、可視化的接口管理平臺,以開發(fā)、產(chǎn)品、測試人員提供更優(yōu)雅的接口管理服務(wù)為目標,該項目由去哪兒網(wǎng)大前端技術(shù)團隊開源的,托管在 Github 上,已經(jīng) 9000 多星。
YApi 作為 API 管理平臺主要提供三大塊功能:
- 項目管理:提供基本的項目分組,項目管理,接口管理功能,成員權(quán)限管理
- 接口管理:提供友好的接口文檔,支持多人協(xié)作接口編輯功能,以及類 Postman 測試工具便于高效調(diào)試接口
- Mock 服務(wù):基于Mock.js,通過隨機數(shù)據(jù)生成,模擬各種接口數(shù)據(jù),充分發(fā)揮前后端分離的優(yōu)勢。
什么是Mock.js
Mock.js是一個模擬數(shù)據(jù)生成器,幫助前端開發(fā)和原型與后端進度分離,減少一些單調(diào),特別是在編寫自動化測試時。
--- mock.js那點事(上)
當然 YApi 還有很多強大的功能,比如自動化測試,插件機制,二次開發(fā)等等。
下圖是YApi 官方提供了使用 YApi 的工作流程,從這里可以簡單了解下如何在日常開發(fā)中使用 YApi。
第一個 YApi
登錄注冊
使用 YApi 前,必須要先有登錄賬號,所以一開始需要在所搭建的 YApi 網(wǎng)站上注冊一個賬號,注冊成功就可以用用戶名或者郵箱進行登錄。
注冊成功后就會自動登錄進入 YApi 首頁,后面再次使用就可以直接用賬號登錄了。
需要注意的是作為新注冊的用戶,沒有任何分組與項目的權(quán)限,只能對“公開項目” 的接口進行搜索、瀏覽 ,此時需要聯(lián)系平臺管理員將你加入對應(yīng)項目。
下圖為一個正常賬戶登錄 YApi 首頁的基本內(nèi)容:
首頁頭部展示了當前所在的位置、搜索框、新建項目、查看文檔和用戶信息。
首頁左側(cè)展示分組信息,“分組”是“項目”的集合,只有超級管理員可以管理分組。
首頁右側(cè)是分組下的項目和成員列表,點擊左側(cè)的某個分組,右側(cè)會出現(xiàn)該分組下的項目和成員信息。
點擊項目右上角的星星即可關(guān)注項目,關(guān)注的項目可以在“我的關(guān)注”頁面查看。
點擊頭像進入“個人中心”,允許查看和修改個人信息。
項目接口
首先在項目列表選擇一個項目進入(如果沒有可用的項目,一種方式是找管理員分配項目權(quán)限,一種是在左上角點擊 "添加項目" 新建一個項目),進入項目后可大致看到如下內(nèi)容:
- 接口列表,展示該項目的所有接口名稱,并且按照文件夾分類,默認都在公共分類下,也可以自定義添加分類。
- 測試集合,用于保存接口運行正常的數(shù)據(jù)信息和接口狀態(tài),便于后續(xù)直接使用測試集合中的接口測試。
- 添加接口,為項目添加接口,默認在公共分類下,需要指定接口名,請求方式和接口路徑,保存后自動添加到接口列表下。
- 用于接口數(shù)據(jù)的導(dǎo)入導(dǎo)出,便于接口數(shù)據(jù)的遷移歸檔。
- 對項目信息的基本設(shè)置,如環(huán)境地址,接口路徑,Mock 設(shè)置等。
現(xiàn)在我們再來看下一個簡單接口的頁面展示內(nèi)容:
接口信息框內(nèi)有四個面板可以切換,分別為預(yù)覽,編輯,運行和高級 Mock,我們在編輯面板里可以通過接口的請求方式,請求數(shù)據(jù),響應(yīng)數(shù)據(jù),接口描述等信息進行編輯,保存后都會在預(yù)覽面板內(nèi)清晰展示出來,當需要進行接口測試時就需要在運行面板里操作,里面的操作方式跟 Postman 很相似,相信使用過 Postman 的小伙伴應(yīng)該能很快上手。
注意:使用接口測試服務(wù)時,如果是 Chrome 瀏覽器 ,需安裝測試增強插件,官方也提供了下載地址和安裝教程。
這里有一個小技巧可以分享下:每次進入接口的運行面板,上次使用請求參數(shù)都會被情況,每次都需要重新填寫,如果請求接口參數(shù)一多就十分繁瑣;這里我們可以把測試過的接口通過保存按鈕加入到測試集合中,后面可以直接在測試集合中找到所記錄的接口和有效的請求參數(shù),并且能直接使用。
高級Mock 一欄則是對接口模擬數(shù)據(jù)的設(shè)置,具體用法在后面會詳細介紹。
到這里,YApi 的簡單使用介紹完畢,使用 YApi 進行基本的接口測試和維護應(yīng)該問題不大了,后續(xù)介紹 YApi 的更高級用法和最佳實踐。
Mock 接口
本節(jié)主要描述如何通過 YApi 的 Mock 服務(wù)模擬接口的數(shù)據(jù)。
首先在接口面板里選擇高級Mock一欄,選擇添加期望來定義所實現(xiàn)模擬的條件和數(shù)據(jù)。
添加期望時分為兩部分,一塊是填關(guān)于期望的基本信息,如名稱,白名單IP,匹配的參數(shù)等,另外一塊就是期望模擬的響應(yīng)數(shù)據(jù),如響應(yīng)頭信息,響應(yīng)體數(shù)據(jù),甚至響應(yīng)時間也可以設(shè)置。
在這里設(shè)置響應(yīng)體數(shù)據(jù)時,除了使用常規(guī)的固定假數(shù)據(jù)返回,我們可以使用 Mock.js 支持的語法,讓假數(shù)據(jù)隨機生成,例如下方的示例模擬一個簡單的響應(yīng)數(shù)據(jù): code 為 200 或者 400,message 為重復(fù)出現(xiàn) 1~10次的測試兩次。
{
"code": 200,
"message": "測試測試測試",
"data": {}
}
{
"code": 400,
"message": "測試測試測試測試測試測試",
"data": {}
}
當然除了這樣方式定義模擬數(shù)據(jù)的生成,還有許多豐富的形式,具體的數(shù)據(jù)定義語法可以參見 Mock.js 提供的官方示例:http://mockjs.com/examples.html
最佳實踐
接口分級
YApi 以項目為單位進行接口的管理,基于此還提供的分類的功能,新生成的接口都有默認的分類為公共分類。
為了能更清晰,更直觀有效地管理接口,我們可以從項目的業(yè)務(wù)角度出發(fā),在 YApi 中將業(yè)務(wù)轉(zhuǎn)換為接口分類,每個業(yè)務(wù)分類下管理各自相關(guān)的接口,而一些公共接口統(tǒng)一在公共分類中管理,比如下圖所示,將訂單業(yè)務(wù)和支付業(yè)務(wù)分別生成各自的接口分類,在該分類下都是跟自身業(yè)務(wù)緊密相關(guān)的接口。
環(huán)境配置
當日常開發(fā)中一個程序都會有不同環(huán)境要求,接口請求的地址也不同,為了便于多環(huán)境接口的切換,我們可以在項目設(shè)置的環(huán)境配置 一項添加該項目下接口的多個環(huán)境,并且這里增加了全局 header,項目中設(shè)置全局 header 值。
除此之外,用戶可以在每個環(huán)境配置項中定義 global 全局變量的名稱和值, 接口運行或者測試集合里面可以通過 {{ global.Name }} 來訪問當前環(huán)境變量下定義的全局變量。
請求配置
YApi 支持 pre-script, 就是通過自定義 js 腳本方式改變請求的參數(shù)和返回的 Response 數(shù)據(jù),而這個功能可以滿足當我們請求和響應(yīng)的數(shù)據(jù)都是通過加密處理的使用場景。
請求配置的位置同樣在項目設(shè)置里,針對項目的所有接口生效,對外提供公共變量 context 對象包含的請求和響應(yīng)的所有數(shù)據(jù) 。
如果我們需要在一組接口的 URL 上增加一個公共的 token 參數(shù),可以在 Pre-request Script 里寫如下腳本:
另外,全局變量 context 還提供的工具函數(shù),讓我們使用:
結(jié)合工具函數(shù),我們就可以進行接口請求時和響應(yīng)時的加密處理,例如我們需要對響應(yīng)體中 data 數(shù)據(jù)進行 Base64 加密,可以定義如下腳本:
數(shù)據(jù)導(dǎo)入導(dǎo)出
在數(shù)據(jù)管理上,YApi 提供了簡單而有效的方案來支持數(shù)據(jù)的導(dǎo)入和導(dǎo)出。
YApi 支持快速導(dǎo)入其他格式的接口數(shù)據(jù),以方便快速添加接口。YApi 目前支持 Postman, Swagger, JSON 數(shù)據(jù)導(dǎo)入等,方便我們進行接口數(shù)據(jù)遷移。
而當我們需要把接口分享給非項目組內(nèi)的人時,我們可以使用數(shù)據(jù)導(dǎo)出功能,以 HTML,Markdown 或者 JSON 的格式導(dǎo)出項目接口文檔數(shù)據(jù),只需要將文檔文件給到他人就行了。
結(jié)語
本文主要記錄了開源接口管理平臺- YApi的基本介紹和使用。面對多人多項目的團隊開發(fā),有個統(tǒng)一的管理平臺來進行接口管理和維護,還是很有必要的,也是很基礎(chǔ)的,對項目的開發(fā)效率提高也有很大幫助,如果你有正在使用 YApi 有更好的使用姿勢或者遇到什么坑,更或者在使用過其他的接口管理平臺框架,也歡迎留言交流討論??。
參考
YApi 安裝部署:https://hellosean1025.github.io/yapi/devops/index.html
使用 Docker 構(gòu)建 Yapi: http://www.itdecent.cn/p/a97d2efb23c5
YApi 官方教程:https://hellosean1025.github.io/yapi/documents/index.html
Github 地址:https://github.com/YMFE/yapi
mock.js那點事(上):https://juejin.im/post/58f9eec0a22b9d00658ee4b7