fastmock增長功能根據入參數據動態邏輯返回mock內容

根據入參數據動態返回mock內容

某些場景中,咱們可能須要根據接口的入參規則,加入適當的邏輯處理後再返回數據。一個簡單的場景就是登陸場景,須要根據用戶名密碼,判斷是否登陸成功。再或者,咱們須要根據產品ID動態返回產品信息,等等。如今fastmock提供了這種場景的解決方案,下圖中展現瞭如何若是在mock規則中獲取請求中的各個部分的數據而後再返回,其中包括了四種數據。javascript

  1. restful連接參數,如/user/:id 當請求/user/1時 對應數據爲{id: 1}。獲取方式爲_req.params.id
  2. query查詢參數,如/user?id=1 獲取方式爲_req.query.id
  3. body請求體數據,在請求的request body中 獲取方式爲_req.body.id
  4. headers 頭部信息,經常使用的場景是接口的token驗證 獲取方式爲_req.headers.token

根據入參數據動態返回mock內容

使用方法

  • 在原來的json數據的基礎上,須要動態返回的字段對應的值再也不是固定值或者固定的mock規則,而是傳入一個函數。
  • 這個函數接收兩個參數,_req和Mock 注意:這兩個變量名不能改動
  • 在函數體中返回該字段對應的值,在返回以前作相應的邏輯處理
  • _req參數中包含了四個對象,_req.query , _req.params , _req.body , _req.headers能夠從這四個對象中獲取上述的四種數據。
  • Mock對象就是mock.js 原生對象,能夠用它作mock.js中Mock對象能夠作的事情,如Mock.mock({name: '@cname'})等等

如:上圖中的對應接口錄入規則爲java

{
  "code": "0000",
  "data": {
    "token": function({_req, Mock}) {
      return _req.headers.token;
    },
    "id": function({_req, Mock}) {
      return _req.params.id;
    },
    "name": function({_req, Mock}) {
      return _req.body.name;
    },
    "age": function({_req, Mock}) {
      return _req.query.age;
    }
    
  },
  "desc": "成功"
}

再舉一個驗證登陸信息的例子:json

{
  "code": "0000",
  "data": {
    "verifySuccess": function({_req, Mock}) {
      let body = _req.body;
      return body.username === 'admin' && body.password === '123456';
    },
    "userInfo": function({_req, Mock}) {
      let body = _req.body;
      if (body.username === 'admin' && body.password === '123456') {
        return Mock.mock({
          username: "admin",
          email: "@email",
          address: "@address"
        });
      } else {
        return null;
      }
    },
  },
  "desc": "成功"
}

上面的規則中定義了登陸接口只有請求體{username: 'admin', password: '123456'}時,纔會返回用戶信息,且帶有mock生成的隨機郵箱地址和居住地址restful

相關文章
相關標籤/搜索