yapi調研


yapi調研

 2021-01-13

目錄

1 yapi ER圖
2 數據管理
  2.1 修改接口
  2.2 同一接口處理邏輯
3 Mock 優先級說明

  3.1 mock期望
  3.2 自定義 Mock 腳本
  3.3 全局mock
  3.4 普通mock
4 自動化
  4.1 參數化&變量傳遞
  4.2 響應校驗

 

 yapi部署

0 簡介

YApi 是高效、易用、功能強大的 api 管理平台,旨在為開發、產品、測試人員提供更優雅的接口管理服務。


特性

  • 基於 Json5 和 Mockjs 定義接口返回數據的結構和文檔,效率提升多倍
  • 扁平化權限設計,即保證了大型企業級項目的管理,又保證了易用性
  • 類似 postman 的接口調試
  • 自動化測試, 支持對 Response 斷言
  • MockServer 除支持普通的隨機 mock 外,還增加了 Mock 期望功能,根據設置的請求過濾規則,返回期望數據
  • 支持 postman, har, swagger 數據導入
  • 免費開源,內網部署,信息再也不怕泄露了

 

1 yapi ER圖

  

 

 

2 數據管理

2.1 修改接口

備注:

同一接口:按2.2章節處理方式,原先的用例不會刪除,還能對對應上接口,見下圖

不同接口:按新接口處理方式,原先導入的不刪除。

 

 

 

2.2 同一接口處理邏輯

只對接口做請求和響應報文(包括其中字段或報文對象)進行修改

只要影響接口表 interface表 db.getCollection('interface').find({"title":"根據id更新用戶的接口"})

  • 普通模式:不導入已存在的接口,即使請求,響應內容不一樣

無修改,除了"edit_uid" : 0,  這個是user id

  • 智能合並:

"type" : "var",    變成    "type" : "static",

請求相應報文被覆蓋

add_time沒有改變

up_time有改變

  • 完全覆蓋:

同智能合並

  

3 Mock 優先級說明

請求 Mock 數據時,規則匹配優先級:Mock 期望 > 自定義 Mock 腳本 > 項目全局 mock 腳本 > 普通 Mock。

如果前面匹配到 Mock 數據,后面 Mock 則不返回。

3.1 mock期望

導航: 接口-》接口列表-》具體接口-》高級mock-》添加期望

 注:參數過濾不支持正則表達式

 

 

 注:mock地址 在設置->項目地址->mock地址獲得

 3.2 自定義 Mock 腳本

在前端開發階段,對於某些接口,業務相對復雜,而 UI 端也需要根據接口返回的不同內容去做相應的處理。

YApi 提供了寫JS 腳本方式處理這一問題,可以根據用戶請求的參數修改返回內容。

全局變量
請求

  • header 請求的 HTTP 頭
  • params 請求參數,包括 Body、Query 中所有參數
  • cookie 請求帶的 Cookies

響應

  • mockJson 接口定義的響應數據 Mock 模板
  • resHeader 響應的 HTTP 頭
  • httpCode 響應的 HTTP 狀態碼
  • delay Mock 響應延時,單位為 ms
  • Random Mock.Random 方法,可以添加自定義占位符,詳細使用方法請查看 Wiki

使用方法

  1. 首先開啟此功能
  2. Mock 腳本就是用 JavaScript 對 mockJson 變量修改,請避免被全局變量(httpCode, resHeader, delay)的修改

 

 

 

 3.3 全局mock

v1.3.21 新增全局 mock 設置,方便用戶在項目層面上全局設置公共的mock數據,具體 mock 腳本詳細使用方法詳見 3.2自定義 Mock 腳本

導航 :設置-》全局mock

3.4 普通mock 

1 mock.js

原理
基於 mockjs,跟 Mockjs 區別是 yapi 基於 json + 注釋 定義 mock 數據,無法使用 mockjs 原有的函數功能。

正則表達式需要基於 rule 書寫,示例如下:

{
  "name|regexp": "[a-z0-9_]+?",
  "type|regexp": "json|text|xml"
}

mock函數

{
    "errcode": 0,
    "errmsg": "@word",
    "data": {
        "id": "@id", //@id 隨機生成 id
        "name": "@name" //@name 隨機生成用戶名
    }
}

支持替換請求的 query, body 參數

{
  "name": "${query.name}", //請求的url是/path?name=xiaoming, 返回的name字段是xiaoming
  "type": "${body.type}",   //請求的requestBody type=1,返回的type字段是1
  
}

注:mock.js是基於 json+注釋 的方式,使用mockjs,需要在項目設置中開啟json5選項(開啟后可在接口 body 和返回值中寫 json 字段)。

導航:接口-》接口列表-》具體接口-》編輯 -》 返回數據設置

 

 

{
    "errcode": 0,
    "errmsg": "@word",
    "name|regexp": "[a-z0-9_]+?",
    "type|regexp": "json|text|xml",
    "queryname": "${query.name}", //請求的url是/path?name=xiaoming, 返回的name字段是xiaoming
    "sex": "${body.sex}",   //請求的requestBody type=1,返回的type字段是1
    "data": {
        "id": "@id", //@id 隨機生成 id
        "name": "@name" //@name 隨機生成用戶名
    }
}

請求mock返回如下

{
  "errcode": 0,
  "errmsg": "wbh",
  "name": "o_",
  "type": "json",
  "queryname": "",
  "sex": 1,
  "data": {
    "id": "650000200308233351",
    "name": "Steven Clark"
  }
}

 2 json-schema

導航:同mock.js

 3 mock請求嚴格模式

版本 v1.3.22 新增 mock 接口請求字段參數驗證功能,具體使用方法如下:

  1. 打開 項目 -> 設置 開啟 mock 嚴格模式
  2. 針對 query, form 中設置的必須字段會進行必填校驗

4 自動化

4.1 參數化&變量傳遞

目前 yapi 中的query,body,header和pathParam的輸入參數已經支持點擊選擇功能

 

注:不支持復雜的jsonpath語法,像 $.userlist[?(@.name=='hins')].userid 並不支持 

4.2 響應校驗

編寫完請求參數,可通過 js 腳本寫斷言

 

 常用js函數

1.assert
斷言函數,詳細 api 可查看 document

常用 api

  • assert(value)
    判斷 value 是否為 truth, 例如 assert(1) 通過, assert(0) 不通過,只要 value 不是 null, 0, false 等值驗證通過
  • assert.equal(actual, expected)
    判斷 actual 是否等於 expected,例如 assert(1, 1)通過
  • assert.notEqual(actual, expected)
    判斷 actual 是否不等於 expected
  • assert.deepEqual(actual, expected)
    假設: actual = {a:1} 是一個對象,即便 expected = {a:1},如果使用 assert.equal 可能也是不相等的,因為在 js 引用的只是對象的一個指針,需要使用 assert.deepEqual 比較兩個對象是否相等
  • assert.notDeepEaual(actual, expected)
    深度比較兩個對象是否不相等

2.status
http 狀態碼

3.params
http request params, 合並了 query 和 body

4.body
返回 response body

5.header
返回 response header

6.records
記錄的 http 請求信息,假設需要獲取 key 為 555 的接口參數或者響應數據,可通過 records[555].params 或 records[555].body 獲取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM