npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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 阶段,三个阶段如下

  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<glob> (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)'}]}}