0.0.5 • Published 5 years ago

mock-middleware-c v0.0.5

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

mock-middleware-c

express mock 中间件,支持伪造模型数据,伪造通用数据,缓存服务器数据供以后请求返回

适用于服务器不稳定,数据模型已确定,接口开发尚未开始时

安装

npm:

npm i mock-middleware-c

yarn:

yarn add mock-middleware-c

使用

const mockMiddleWare = require("mock-middleware-c");
app.use(mockMiddleWare()); //入参为config

配置项

基本配置项

本中间件内置三个阶段,任何阶段处理请求(next()或 response.end())则不再流入下一阶段,本次请求下一阶段的配置项将无效。比如本次请求由 mock 阶段处理则不进入 cache 阶段,三个阶段如下

  1. 过滤器阶段,配置需要本中间件需要处理的 url,如果不符合则直接调用 next,相关配置项 pattern
  2. mock 阶段,根据.mockhotrc 配置的 mock 规则 mock 数据并返回,相关配置项 restful、codeField、dataField、formatter
  3. cache 阶段,更新、使用之前 next 时新增的缓存文件,相关配置项 dir、mode

基本配置项是服务启动的配置项,支持两种配置方式

  1. mockMiddleWare(config),如果 config 为对象,则是 config 本身,如果 config 是字符串,则是 config 文件所在的路径
  2. mockMiddleWare(),则会 require 项目目录下的.mockrc.js 文件获取 config

config 的配置项如下

  1. silent:boolean (default: false): 是否打印 log
  2. pattern:array\ (default: '!*/.*'): url 匹配规则,默认过滤.js、.css、.html、.png 等请求
  3. restful:boolean (default: true): 返回的数据是否符合 restful,即 status code 是否为 http status code,举个例子
    1. 如果 restful 为 true,数据为{name: 'tarol'},那么返回的 json 为{name: 'tarol'},http status code 为 200
    2. 如果 restful 为 true,数据不存在,那么返回的 json 为空,http status code 为 404
    3. 如果 restful 为 false,数据为{name: 'tarol'},那么返回的 json 为{code: 200, data: {name: 'tarol'}},http status code 为 200
    4. 如果 restful 为 false,数据不存在,那么返回的 json 为{code: 404},http status code 为 200
  4. codeField:string (default: 'code'): restful 为 false 时生效,对应上面例子 3 中 code 的 key name
  5. dataField:string (default: 'data'): restful 为 false 时生效,对应上面例子 3 中 data 的 key name
  6. formatter:function (default: null): restful 为 false 时生效,该值被设置后 codeField 和 dataField 失效,用于应对自定义程度比较高的场景,比如当 mock 的数据 code 是 404 时,data 为空,但是想设置另外一个字段 message 为'资源未找到',那么 formatter 就应该被设置为
(data, code) => {
  if (code === 404) {
    return { message: "资源未找到", code };
  }
  return { data, code };
};
  1. dir:string (default: 'mock'): mock 缓存文件保存的文件夹
  2. mode:enum (default: 0):
  3. 0 为 cache 模式,存在 cache 时使用 cache,不存在时 next 并新增 cache
  4. 1 为 onlyCache 模式,全部 next,但只在 cache 不存在时新增 cache
  5. 2 为 reCache 模式,全部 next,存在 cache 则覆盖,不存在时则新增

数据模型配置项

这部分配置项作用于 mock 阶段,支持两种配置方式

  1. mockMiddleWare(config, mockConfig),如果 mockConfig 为对象,则是 mockConfig 本身,但是极度不推荐使用对象的方式,因为不支持热更新;如果 mockConfig 是字符串,则是 mockConfig 文件所在的路径,使用文件的方式可以支持热更新,即修改配置文件后立即生效,不用重新启动服务
  2. mockMiddleWare(),则会 require 项目目录下的.mockhotrc.js 文件获取 config

mock 配置支持两种规则

  1. 基本规则,即 404 报错,500 报错,资源为空对象,资源为空数组等这类返回的数据不包含任何实体模型的规则。这类规则配置在 base 字段下,即配置文件需要导出{base: {...}}
    1. 404 等非正常 code 报错,以 code 为 key name,value 为数组,数组元素为 api 的 pathname,比如如果想配置/config为 404,那么配置文件导出{base: {404: ['/config']}},同理可以设置 500,501 等任何数字为 base 的 prop key
    2. 空数组,key name 为'[]',value 为 api 数组,比如{base: {'[]': ['/list']}}
    3. 由于 key name 会使用 JSON.parse 解析,所以空对象的配置为{base: {'{}': ['/list']}}
    4. 如果 key name 既不是数字,又不能被 JSON.parse 解析,那么会直接放在 data 中,比如{base: {'abc': ['/test']}}/test返回的资源为'abc',如果 restful 为 false,返回的 json 是{code: 200, data: 'abc'}
  2. 模型规则,如果服务器接口还未进入开发,但是实体模型已经确认,那么可以使用本规则。本规则配置在 model 字段下,即配置文件需要导出{model: {...}}

    1. api 的 pathname 为 key name,value 则使用mockjs 定义的规则,比如/person 返回包含随机名字和年龄的对象,那么配置文件导出{model: {'/person': {name: '@name', age: '@integer(0, 120)'}}}
    2. 如果 api 想返回一个指定范围的数组,那么 key name 除了包含 api 的 pathname,还要限定数组范围(默认是5-20),比如/persons 的配置{model: {'/persons|10-30': [{name: '@name', age: '@integer(0, 120)'}]}}