在平常的開發模式裏,前端負責頁面和動態腳本的處理,服務端負責業務邏輯和接口的實現。當前端須要服務端提供的接口實現動態數據展現和交時,服務端完成接口開發後會提供一個接口文檔給到前端按照文檔規範再進行開發。這樣模式下每每會出現兩種狀況: 一種 是往前端開發的進度往與服務端開發的進度不會徹底同步,這就存在了一方等待另外一方的狀況,這多少會影響總體項目開發進度; 另外一種 就是當前端對接不一樣的服務端人員所開發的接口,若是沒有了統一的接口文檔規範,每一個人輸出的接口文檔都不盡相同,在後期對項目接口的更新和維護會是很大的時間成本。前端
因此頗有必要有一個先後端通用的接口管理平臺,簡化接口對接和維護的流程。先後端能夠經過接口管理平臺,制定接口數據和格式,而後經過模擬數據生成假接口,先後端再各自獨立開發,直至雙方都開發完成後對接真實接口數據進行微調便可。而且經過接口管理平臺,開發人員能夠更便捷地管理項目全部接口數據。python
這裏本文將主要認識學習一下目前國內開源較火的接口管理平臺 YApi,看如何使用它幫助咱們提升開發效率和便捷對接口的管理。面試
YApi 是一個可本地部署的、打通先後端及QA的、可視化的接口管理平臺,以開發、產品、測試人員提供更優雅的接口管理服務爲目標,該項目由去哪兒網大前端技術團隊開源的,託管在 Github 上,已經 9000 多星。後端
YApi 做爲 API 管理平臺主要提供三大塊功能:瀏覽器
項目管理 :提供基本的項目分組,項目管理,接口管理功能,成員權限管理框架
接口管理 :提供友好的接口文檔,支持多人協做接口編輯功能,以及類 Postman 測試工具便於高效調試接口前後端分離
Mock 服務 :基於Mock.js,經過隨機數據生成,模擬各類接口數據,充分發揮先後端分離的優點。函數
什麼是Mock . js?工具
Mock . js是 一個模擬數據生成器,幫助前端開發和原型與後端進度分離,減小一些單調,特別 是 在編寫自動化測試時。學習
固然 YApi 還有不少強大的功能,好比自動化測試,插件機制,二次開發等等。
下圖是YApi 官方提供了使用 YApi 的工做流程,從這裏能夠簡單瞭解下如何在平常開發中使用 YApi。
使用 YApi 前,必需要先有登陸帳號,因此一開始須要在所搭建的 YApi 網站上註冊一個帳號,註冊成功就能夠用用戶名或者郵箱進行登陸。
註冊成功後就會自動登陸進入 YApi 首頁,後面再次使用就能夠直接用帳號登陸了。
須要注意的是做爲新註冊的用戶,沒有任何分組與項目的權限,只能對「公開項目」 的接口進行搜索、瀏覽 ,此時須要聯繫平臺管理員將你加入對應項目。
下圖爲一個正常帳戶登陸 YApi 首頁的基本內容:
(1)首頁頭部展現了當前所在的位置、搜索框、新建項目、查看文檔和用戶信息。
(2)首頁左側展現分組信息,「分組」是「項目」的集合,只有超級管理員能夠管理分組。
(3)首頁右側是分組下的項目和成員列表,點擊左側的某個分組,右側會出現該分組下的項目和成員信息。
(4)點擊項目右上角的星星便可關注項目,關注的項目能夠在「個人關注」頁面查看。
(5)點擊頭像進入「我的中心」,容許查看和修改我的信息。
首先在項目列表選擇一個項目進入(若是沒有可用的項目, 一種方式是找管理員分配項目權限 ,一種是在左上角點擊 "添加項目" 新建一個項目),進入項目後可大體看到以下內容:
(1)接口列表,展現該項目的全部接口名稱,而且按照文件夾分類,默認都在公共分類下,也能夠自定義添加分類。
(2)測試集合,用於保存接口運行正常的數據信息和接口狀態,便於後續直接使用測試集合中的接口測試。
(3)添加接口,爲項目添加接口,默認在公共分類下,須要指定接口名,請求方式和接口路徑,保存後自動添加到接口列表下。
(4)用於接口數據的導入導出,便於接口數據的遷移歸檔。
(5)對項目信息的基本設置,如環境地址,接口路徑,Mock 設置等。
如今咱們再來看下一個簡單接口的頁面展現內容:
接口信息框內有四個面板能夠切換,分別爲預覽,編輯,運行和高級 Mock,咱們在 編輯 面板裏能夠經過接口的請求方式,請求數據,響應數據,接口描述等信息進行編輯,保存後都會在 預覽 面板內清晰展現出來,當須要進行接口測試時就須要在 運行 面板裏操做,裏面的操做方式跟 Postman 很類似,相信使用過 Postman 的小夥伴應該能很快上手。
注意:使用接口測試服務時,若是是 Chrome 瀏覽器 ,需安裝測試加強插件,官方也提供了下載地址和安裝教程。
這裏有一個小技巧能夠分享下:每次進入接口的運行面板,上次使用請求參數都會被狀況,每次都須要從新填寫,若是請求接口參數一多就十分繁瑣;這裏咱們能夠把測試過的接口經過 保存 按鈕加入到測試集合中,後面能夠直接在測試集合中找到所記錄的接口和有效的請求參數,而且能直接使用。
高級Mock 一欄則是對接口模擬數據的設置,具體用法在後面會詳細介紹。
到這裏,YApi 的簡單使用介紹完畢,使用 YApi 進行基本的接口測試和維護應該問題不大了,後續介紹 YApi 的更高級用法和最佳實踐。
本節主要描述如何經過 YApi 的 Mock 服務模擬接口的數據。
首先在接口面板裏選擇 高級Mock 一欄,選擇添加指望來定義所實現模擬的條件和數據。
添加指望時分爲兩部分,一塊是填關於指望的基本信息,如名稱,白名單IP,匹配的參數等,另一塊就是指望模擬的響應數據,如響應頭信息,響應體數據,甚至響應時間也能夠設置。
在這裏設置響應體數據時,除了使用常規的固定假數據返回,咱們可使用 Mock.js 支持的語法,讓假數據隨機生成,例以下方的示例模擬一個簡單的響應數據: code 爲 200 或者 400,message 爲重複出現 1~10次的測試兩次。
保存以後,咱們對接口的 Mock 地址*(預覽面板中 Mock 地址連接)*進行屢次請求就隨機得到如下的請求數據:{"code":200,"message":"測試測試測試","data": {}}{"code":400,"message":"測試測試測試測試測試測試","data": {}}
固然除了這樣方式定義模擬數據的生成,還有許多豐富的形式,具體的數據定義語法能夠參見 Mock.js 提供的官方示例:mockjs.com/examples.ht…
YApi 以項目爲單位進行接口的管理,基於此還提供的分類的功能,新生成的接口都有默認的分類爲公共分類。
爲了能更清晰,更直觀有效地管理接口,咱們能夠從項目的業務角度出發,在 YApi 中將業務轉換爲接口分類,每一個業務分類下管理各自相關的接口,而一些公共接口統一在公共分類中管理,好比下圖所示,將訂單業務和支付業務分別生成各自的接口分類,在該分類下都是跟自身業務緊密相關的接口。
當平常開發中一個程序都會有不一樣環境要求,接口請求的地址也不一樣,爲了便於多環境接口的切換,咱們能夠在項目設置的環境配置 一項添加該項目下接口的多個環境,而且這裏增長了全局 header,項目中設置全局 header 值。
除此以外,用戶能夠在每一個環境配置項中定義 global 全局變量的名稱和值, 接口運行或者測試集合裏面能夠經過 {{ global.Name }} 來訪問當前環境變量下定義的全局變量。
設置保存以後,咱們就能夠在該項目下任一接口的運行面板裏切換環境地址,以下
YApi 支持 pre-script, 就是經過自定義 js 腳本方式改變請求的參數和返回的 Response 數據,而這個功能能夠知足當咱們請求和響應的數據都是經過加密處理的使用場景。
請求配置的位置一樣在項目設置裏,針對項目的全部接口生效,對外提供公共變量 context 對象包含的請求和響應的全部數據 。
若是咱們須要在一組接口的 URL 上增長一個公共的 token 參數,能夠在 Pre-request Script 裏寫以下腳本:
而若是咱們須要修改響應數據中某個值進行修改,能夠填寫以下 Pre-response Script 裏寫以下腳本:
另外,全局變量 context 還提供的工具函數,讓咱們使用:
結合工具函數,咱們就能夠進行接口請求時和響應時的加密處理,例如咱們須要對響應體中 data 數據進行 Base64 加密,能夠定義以下腳本:
在數據管理上,YApi 提供了簡單而有效的方案來支持數據的導入和導出。
YApi 支持快速導入其餘格式的接口數據,以方便快速添加接口。YApi 目前支持 Postman, Swagger, JSON 數據導入等,方便咱們進行接口數據遷移。
而當咱們須要把接口分享給非項目組內的人時,咱們可使用數據導出功能,以 HTML,Markdown 或者 JSON 的格式導出項目接口文檔數據,只須要將文檔文件給到他人就好了。
本文主要記錄了開源接口管理平臺- YApi的基本介紹和使用。面對多人多項目的團隊開發,有個統一的管理平臺來進行接口管理和維護,仍是頗有必要的,也是很基礎的,對項目的開發效率提升也有很大幫助,若是你有正在使用 YApi 有更好的使用姿式或者遇到什麼坑,更或者在使用過其餘的接口管理平臺框架,也歡迎留言交流討論。
讀到這的朋友還能夠私信我免費領取一份收集的一線大廠面試資料、python自動化學習資料及更多python進階知識筆記和視頻資料。