fastmock增加功能根据入参数据动态逻辑返回mock内容

2019-03-21  本文已影响0人  愤怒的coder

根据入参数据动态返回mock内容

某些场景中,我们可能需要根据接口的入参规则,加入适当的逻辑处理后再返回数据。一个简单的场景就是登录场景,需要根据用户名密码,判断是否登录成功。再或者,我们需要根据产品ID动态返回产品信息,等等。现在fastmock提供了这种场景的解决方案,下图中展示了如何如果在mock规则中获取请求中的各个部分的数据然后再返回,其中包括了四种数据。

  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内容

使用方法

{
  "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": "成功"
}

再举一个验证登录信息的例子:

{
  "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生成的随机邮箱地址和居住地址

上一篇下一篇

猜你喜欢

热点阅读