mock-middleware-c
v0.0.5
Published
mock中间件,支持伪造模型数据,伪造通用数据,缓存服务器数据供以后请求返回
Downloads
2
Readme
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 阶段,三个阶段如下
- 过滤器阶段,配置需要本中间件需要处理的 url,如果不符合则直接调用 next,相关配置项 pattern
- mock 阶段,根据.mockhotrc 配置的 mock 规则 mock 数据并返回,相关配置项 restful、codeField、dataField、formatter
- cache 阶段,更新、使用之前 next 时新增的缓存文件,相关配置项 dir、mode
基本配置项是服务启动的配置项,支持两种配置方式
mockMiddleWare(config)
,如果 config 为对象,则是 config 本身,如果 config 是字符串,则是 config 文件所在的路径mockMiddleWare()
,则会 require 项目目录下的.mockrc.js 文件获取 config
config 的配置项如下
- silent:boolean (default: false): 是否打印 log
- pattern:array<glob> (default: ['!**/.']): url 匹配规则,默认过滤.js、.css、.html、.png 等请求
- restful:boolean (default: true): 返回的数据是否符合 restful,即 status code 是否为 http status code,举个例子
- 如果 restful 为 true,数据为{name: 'tarol'},那么返回的 json 为{name: 'tarol'},http status code 为 200
- 如果 restful 为 true,数据不存在,那么返回的 json 为空,http status code 为 404
- 如果 restful 为 false,数据为{name: 'tarol'},那么返回的 json 为{code: 200, data: {name: 'tarol'}},http status code 为 200
- 如果 restful 为 false,数据不存在,那么返回的 json 为{code: 404},http status code 为 200
- codeField:string (default: 'code'): restful 为 false 时生效,对应上面例子 3 中 code 的 key name
- dataField:string (default: 'data'): restful 为 false 时生效,对应上面例子 3 中 data 的 key name
- 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 };
};
- dir:string (default: 'mock'): mock 缓存文件保存的文件夹
- mode:enum (default: 0):
- 0 为 cache 模式,存在 cache 时使用 cache,不存在时 next 并新增 cache
- 1 为 onlyCache 模式,全部 next,但只在 cache 不存在时新增 cache
- 2 为 reCache 模式,全部 next,存在 cache 则覆盖,不存在时则新增
数据模型配置项
这部分配置项作用于 mock 阶段,支持两种配置方式
mockMiddleWare(config, mockConfig)
,如果 mockConfig 为对象,则是 mockConfig 本身,但是极度不推荐使用对象的方式,因为不支持热更新;如果 mockConfig 是字符串,则是 mockConfig 文件所在的路径,使用文件的方式可以支持热更新,即修改配置文件后立即生效,不用重新启动服务mockMiddleWare()
,则会 require 项目目录下的.mockhotrc.js 文件获取 config
mock 配置支持两种规则
基本规则,即 404 报错,500 报错,资源为空对象,资源为空数组等这类返回的数据不包含任何实体模型的规则。这类规则配置在 base 字段下,即配置文件需要导出
{base: {...}}
- 404 等非正常 code 报错,以 code 为 key name,value 为数组,数组元素为 api 的 pathname,比如如果想配置
/config
为 404,那么配置文件导出{base: {404: ['/config']}}
,同理可以设置 500,501 等任何数字为 base 的 prop key - 空数组,key name 为
'[]'
,value 为 api 数组,比如{base: {'[]': ['/list']}}
- 由于 key name 会使用 JSON.parse 解析,所以空对象的配置为
{base: {'{}': ['/list']}}
- 如果 key name 既不是数字,又不能被 JSON.parse 解析,那么会直接放在 data 中,比如
{base: {'abc': ['/test']}}
,/test
返回的资源为'abc'
,如果 restful 为 false,返回的 json 是{code: 200, data: 'abc'}
- 404 等非正常 code 报错,以 code 为 key name,value 为数组,数组元素为 api 的 pathname,比如如果想配置
模型规则,如果服务器接口还未进入开发,但是实体模型已经确认,那么可以使用本规则。本规则配置在 model 字段下,即配置文件需要导出
{model: {...}}
- api 的 pathname 为 key name,value 则使用mockjs 定义的规则,比如/person 返回包含随机名字和年龄的对象,那么配置文件导出
{model: {'/person': {name: '@name', age: '@integer(0, 120)'}}}
- 如果 api 想返回一个指定范围的数组,那么 key name 除了包含 api 的 pathname,还要限定数组范围(默认是
5-20
),比如/persons 的配置{model: {'/persons|10-30': [{name: '@name', age: '@integer(0, 120)'}]}}
- api 的 pathname 为 key name,value 则使用mockjs 定义的规则,比如/person 返回包含随机名字和年龄的对象,那么配置文件导出