添加及調用 Mock API
在瀑布流開發模式中,如果前端開發人員需要進行頁面對接,需要後端先完成API的開發工作,因此前後端開發的進度會互相影響。
通過 Mock API,您可以事先編寫好 API 的數據生成規則,由 API 研發管理平台 動態生成 API 的返回數據。開發人員通過訪問 Mock API 來獲得頁面所需要的數據,完成對接工作。
Apikit 提供市面最強的Mock API能力體系:
如果用户僅需要快速的基於接口文檔中的返回結果獲取對應的隨機數據,則可以通過簡易Mock功能獲取對應信息。
如果用户期望通過一個url模擬不同的請求信息時,獲取對應個的返回結果模擬數據,則推薦使用高級Mock功能。
一、高級Mock
功能入口:API管理應用 / 選中某個項目 / API文檔菜單 / 選中某一API文檔 / 點擊“高級Mock”TAB
高級Mock API 支持根據不同的請求參數返回不同的 HTTP Status Code、Header、Body等數據。您可以在一個 API 文檔裏創建多個高級Mock API ,模擬前端發起的各種請求,方便對前端邏輯進行校驗。
當項目正式發佈時,只需將高級 Mock API 的地址前綴替換為實際的訪問地址即可。
因為同一個項目中的高級Mock API的地址前綴是相同的(如mock.eolinker.com/uasyd1/…),因此可以在代碼中將高級Mock API的地址前綴作為全局變量,項目上線時僅需替換變量的值即可改變整個項目的 API 請求地址前綴。
1.1 添加高級Mock
在“高級Mock”頁下,點擊“添加Mock”,即會有添加Mock信息彈窗。
除了高級Mock期望名稱外,其餘需輸入的信息分成兩個部分:請求觸發條件和響應內容
1.1.1 請求觸發條件
調用高級Mock的接口地址時,僅有請求信息滿足請求觸發條件方會返回該高級Mock設置的返回參數。
請求觸發條件可設置請求頭部、請求體、Query參數。
請求頭部 & Query參數
- 請求觸發條件的信息默認同步文檔中的請求參數對應的參數信息。其中請求頭部和Query參數設置較為簡單,直接填寫參數和預期參數值即可。
請求體 - 請求觸發條件的請求體數據默認填入文檔中的請求體參數信息。
若請求體內有參數,則系統需校驗參數名、字段類型和期望參數值。其中若API文檔中有設置參數的示例值,則會自動填入到期望參數值內。期望參數值不可為空,若不希望把該請求參數作為觸發條件,則可刪除該參數。
期望參數值校驗可選多種運算方式,包含正則匹配、等於、不等於、大於、小於、大於等於、小於等於。
請求體觸發條件提供是否校驗數組內元素的勾選項,默認不勾選。不勾選時,對於數組類型參數僅校驗第一個元素是否滿足規則。勾選後,會對數組類型參數的所有元素進行校驗。
1.1.2 響應內容-Body
響應內容為滿足該高級Mock觸發條件後,Mock URL返回的模擬參數值。其中Eolink提供以下五種配置響應內容中的響應體的方式
1.1.2.1 跟隨 API 文檔
實時同步API文檔的返回參數為該高級Mock的返回模擬值。即API文檔調整了返回參數字段或結構後,系統自動同步對應的結構和模擬值。
跟隨API文檔時,各參數輸出的模擬值和文檔中該返回參數的示例值字段和Mock字段相關。
若設置了Mock字段,未設置示例字段,則根據Mock字段的規則返回動態模擬值;
若未設置Mock字段,未設置示例字段,則根據示例字段的內容返回靜態模擬值;
若設置了Mock字段,且也設置了示例字段,則根據示例字段的內容返回靜態模擬值。
即示例字段的優先級高於Mock字段。
若未設置Mock字段,且未設置示例字段,則輸出系統默認兜底規則:
1.1.2.2 JSON
響應內容使用JSON格式編輯時,支持Mockjs語法。
在JSON的響應內容表格中四個輸入字段的解析如下:
僅返回固定值
若用户僅需要返回某個固定值,則僅需把該固定值填入到參數值字段中即可
僅使用Mockjs佔位符
若用户僅需要使用Mockjs佔位符即可完成隨機數生成,則僅需把Mockjs佔位符填入到參數值字段中即可。注意需帶有佔位符前綴@
重複Mockjs佔位符輸出內容
若用户需要重複Mockjs佔位符輸出的內容,例如佔位符為@mock="★",若不填寫生成規則字段,則系統會自動輸出一個★。
若生成規則填寫2,則代表需要重複輸出2次該佔位符結果,最終輸出★★。
若生成規則填寫1-3,則代表需要重複輸出1次到3次範圍內隨機次數的該佔位符結果,最終輸出有可能為★或★★或★★★。
字段類型為數字相關類型的特殊用法
若字段類型選擇了int、float、double、number,當參數值未輸入任何內容時。可通過生成規則輸出特殊範圍的隨機數字。填寫規則為:1-1000代表1到1000中隨機一個數字;若有小數點,小數點後填寫1-3,則代表小數點後隨機出現1到3位的數字。
例如 1-10.1-10,則代表小數點前從1到10隨機出現一個數字,小數點後出現1到10位隨機數字。所以可能的輸出值為5.2341。
JSON格式還提供根數據生成規則,需選擇根類型為數組Aarray時才會生效,用於配置生成多少個數組元素。
1.1.2.3 XML
使用XML格式時,可以編輯XML聲明,並編輯各參數字段的屬性。
1.1.2.4 Raw
當您不需要隨機生成數據時,可以選擇 Raw 類型並可填寫任意格式靜態數據。
1.1.2.5 JavaScript
當您希望通過代碼生成返回數據時,可以使用編寫 Javascript 代碼的方式,並使用 return 語句返回數據。Javascript 模式中也支持 Mock JS,通過 Mock.mock() 方式調用,詳情可以查閲 Mock JS 官方文檔。
以下例子表示使用 Javascript 代碼結合 Mock JS 生成 隨機中文名+當前日期 的返回結果:
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
//在這裏使用Mock JS 獲取隨機中文名
var userName = Mock.mock("@cname");
if (month >= 1 && month <= 9)
{
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9)
{
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
return userName+seperator1+currentdate;
1.1.3 響應內容-Header
響應頭部內容會自動同步API文檔中的返回頭部內容,其高級Mock的配置也較為簡單,直接編輯參數名與參數值即可。
1.1.3.1 響應內容-高級設置
用户還可以在高級Mock中對響應進行高級設置:配置響應狀態碼或響應延遲時間。
響應狀態碼
- 僅HTTP協議的高級Mock方可配置,可輸入3位標準的HTTP狀態碼。系統默認填寫200。
響應延遲時間
- 可配置高級Mock的URL調用後延遲多少秒返回信息。可配置單位為毫秒ms。
1.2 調用高級Mock
用户點擊高級Mock列表頁頂部的調用地址,即可複製地址。可把地址黏貼到IDE工具中,調用接口進行調試。
1.2.1 調用優先級
一個API文檔中無論設置了多少條高級Mock,均僅有一個高級Mock調用地址。用户在調用時,根據請求的內容判斷觸發了哪一條的高級Mock設置,並返回對應高級Mock的返回結果。
系統默認提供一條系統默認期望的高級Mock設置,該配置無任何請求觸發條件,代表任何條件均可觸發該高級Mock。但系統會遵循自定義高級Mock設置大於系統默認期望設置的優先級,優先執行其他高級Mock設置。若其他高級Mock設置未被觸發時,才會觸發系統默認期望。
另外,若用户停用系統默認期望的高級Mock,並調用時未有任何其他高級Mock被觸發,則系統會返回提醒:無法找到該Mock API,並檢查相關設置。
1.2.2 啓用/停用高級Mock
在保存高級Mock配置時,系統會自動判斷其請求觸發條件是否和其他高級Mock配置相同。若有相同的請求觸發條件,則會提醒繼續編輯以便把請求觸發條件修改成不一樣的條件,或繼續保存當前的高級Mock配置,並停用與其請求觸發條件相同的高級Mock。
用户可以在高級Mock列表右側的操作按鈕中,設置啓用或停用對應高級Mock。停用後,即使請求觸發條件滿足該高級Mock的需求,也不會返回該高級Mock的返回結果。
二、簡易Mock
功能入口:API管理應用 / 選中某個項目 / API文檔菜單 / 選中某一API文檔 / 點擊“編輯”TAB
簡易Mock功能可在編寫API文檔的時候,同時對不同的返回結果進行Mock配置。並且可預置智能Mock規則,在編寫返回參數時,若參數名和字段類型匹配智能Mock規則時,系統自動填入該參數的Mock規則。
配置簡易Mock後,API文檔會自動生成Mock URL,用户可複製該URL直接調用得出想要的數據結果。
該功能僅支持HTTP協議接口下的JSON或XML數據類型的返回結果
2.1 添加簡易Mock
1、 進入API文檔編輯頁,選中需要編輯的返回結果
2、數據類型選擇JSON 或 XML ,在參數列表中填寫字段名和選擇數據類型,若字段名和數據類型命中了智能Mock的規則,則字段名輸入框失去焦點後,系統會自動填充該字段的Mock值。
若mock值已有內容,則變更字段名或數據類型均不會觸發智能Mock
![]()
3、無論是否命中智能Mock規則,均可點擊mock輸入框,填寫所需的mock規則。mock輸入框支持填寫數值和mockjs佔位符。
- 若填寫數值,則調用簡易Mock的時候固定返回該數值
- 若填寫mockjs佔位符,系統會根據佔位符的輸入內容實時展示您可能想輸入的值。您點擊下拉選項中的可能值後,該值會快速填入mock輸入框中。
4、點擊保存API文檔,所添加的簡易Mock即可被調用。
2.2 調用簡易Mock
1、進入API文檔展示頁,下拉至返回參數模塊,對應的返回結果標題下,會有簡易Mock鏈接
2、點擊 簡易Mock 鏈接右側的複製按鈕即可複製到剪貼板,在代碼中直接對該地址發起請求即可得到對應結果的虛擬數據。
2.3 刪除簡易Mock
進入API文檔編輯頁,在對應的返回結果中,清空對應字段的mock值後,調用該簡易Mock時,對應字段返回系統默認的隨機數據。