New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

mocker-server-cli

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mocker-server-cli

mockServer

latest
npmnpm
Version
1.1.11
Version published
Maintainers
1
Created
Source

超级实用的MOCK server 服务

全局模式使用

  • 全局安装依耐:nodemon
npm install nodemon -g
npm install mocker-server-cli -g

  • 退出目录,然后在任意目录下
mocker-server-cli

  • 命令行参数,--port 设置端口 --docs开启文档,如下:
mocker-server-cli --port 8899 --docs

1、模板

mockServer.js文件中, 如果是:const mockServer = new MockServer({ dir: ${join(__dirname)}/mock }) 则,在/mock 文件夹下,新建任意以.js结尾的文件,系统将自动读取这些文件,文件内容为:

module.exports = {
  'get /demo': {
    status: 0,
    message: '退出',
    data: {}
  }
}

2、key:键名的定义:键名为字符串,"{请求方式} {请求路径}",如:"get /api/test"

批量定义请用“,”隔开,如:"get /api/test,get /api/test2,get /api/test3" 以下将会成功模拟出三个接口!!!

module.exports = {
  "get /api/test,get /api/test2,get /api/test3": {
    status: 0,
    message: '退出',
    data: {}
  }
}

3、vaule:值为对象或或函数

module.exports = {
  "get /dome": {
    status: 0,
    message: '退出',
    data: {}
  },
  //或
  "get /dome2": ()=>{
    return {
      status: 0,
      message: '退出',
      data: {}
    }
  }
}

4、sleep:睡眠,接口延时返回功能

以下代码,接口将3秒后返回结果

module.exports = {
  "get /dome": {
    sleep: 3000,
    status: 0,
    message: '退出',
    data: {}
  }
}

4、filter或handle:数据过滤或数据处理,对返回的值预先处理,filter或handle可以为异步函数

module.exports = {
  'get /demo': {
    //支持额外的数据过滤函数,有三个参数[req:请求体,res:响应体,data:对应的对象]
    filter({ originalUrl = '',...q }, res, resData) {
      if (originalUrl.includes('/2')) {
        //返回数据为:id===2的数组
        return {
          ...resData,
          data:resData.data.filter( item => item.id===2 )
        }
      }
      return resData
    },
    status: 0,
    message: '',
    data: {}
  },
  'get /demo2': {
    //filter或handle 可以是异步函数
    async filter({ originalUrl = '',...q }, res, resData) {
      let sleep=()=>new Promise(resolve => {
        setTimeout(()=>{
          resolve()
        },3000)
      })
      await sleep()
      if (originalUrl.includes('/2')) {
        //返回数据为:id===2的数组
        return {
          ...resData,
          data:resData.data.filter( item => item.id===2 )
        }
      }
      return resData
    },
    status: 0,
    message: '',
    data: {}
  },
}

5、支持mock语法:常用有 "@id","@name","@cname","@image","@time","@data","@address"...

更多详情 mockjs官网

module.exports = {
  'get /demo': {
    status: 0,
    message: '',
    data: {
      "id":"@id", //随机id
      "role|1":["admin","user"], //数组中随机一个值
      "userLisr|10":[{
        "id|+1":1 // 累加
      }] //随机10条数据
    }
  }
}

5、路由规则,自动识别 /*

注意:能自动识别常用的6种格式:

  • 最后面为 /*,如:/demo/*,
  • 倒数第二级 /*,如:/demo/*/test,
  • 倒数第三级 /*,如:/demo/*/test/test2
  • 倒数两级都为/*,如:/demo/*/*
  • 倒数三级和最后都为/*,如:/demo/*/n/*
  • 倒数三级都为/*,如:/demo/*//

如果超出以上范围:请在请求request.query添加routerRule,告诉系统将匹配的键,例如: 例如:http://127.0.0.1:8022/demo/a/b?routerRule=/demo/:id/:name 或者:http://127.0.0.1:8022/demo/a/b?routerRule=/demo/*/* 或者:http://127.0.0.1:8022/demo/a/b?routerRule=/demo/${id}/${name}

module.exports = {
  //自动匹配
  'get /demo/*/*': {
    status: 0,
    message: '',
    data: {
      "id":"@id", //随机id
    }
  },
  // 带:的路由,无法识别,需要通过request.query.routerRule='get_demo_:id_:name',告诉系统
  // 发出请,应该为:api.get('/demo/11/likuan?routerRule=get_demo_:id_:name')
  'get /demo/:id/:name': {
    status: 0,
    message: '',
    data: {
      "id":"@id", //随机id
    }
  }
}

6、支持将某个接口设为代理

module.exports = {
  'get /sansi/api/getuserinfo': {
    //原本返回的数据
    status: 0,
    message: '',
    // 现在想代理到另一台机器上的同一路径的资源,只要加上proxy:'127.0.0.1:3436'
    // 如果代理,再访问此地址:127.0.0.1:8022/db/get/sansi/api/getuserinfo,
    // 将呈现 127.0.0.1:3436/sansi/api/getuserinfo 的数据
    proxy:'127.0.0.1:3436',
  },

}

最后

祝你使用愉快!有任何问题请联系我!

Keywords

env

FAQs

Package last updated on 04 Mar 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts