1.0.0 • Published 2 years ago

@openeagle/http-mock-middleware v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

webpack-plugin生成mock数据

期望功能

1:支持多项目✔

2:多前缀配置✔(支持独立api、独立文件夹配置)

3:api做兜底✔

4:切换不同场景数据✔

5:支持本地合并生成的mock数据✔

设计原则

数据形式说明优先级禁用方式
local本地mock文件1{disableMock: true}
yapiyapi生成的mock数据2{disableMock: true}
serverapi的兜底3不传 proxy

考虑

1.mock数据生成方式
本地文件方式: {
  优点: 方便基于生成的mock修改
  缺点:1:本地文件需要维护
       2:第二次生成时会被覆盖
       3:本地合并生成的mock数据时还是需要生成一份express数据
}

express方式:{
  优点:不生成本地文件,
  缺点:不方便基于生成的mock修改(功能.5可优化)
}

综上所述:使用express方式
2.使用
module.exports = {
  devServer: {
    ...
   before(app){
      const httpMockMiddleware = require('@openeagle/http-mock-middleware');
      httpMockMiddleware(app, {
        local: path.resolve(__dirname, './mocker'), // 本地路径的mock文件目录
        yapi: {
          origin: 'http://api.openeagle.cn/', // yapi对应的源地址
          response: {
            returncode: 10000,
            message: '请求成功',
          },
          projects: [
            {
              id: '633', // yapi的项目id
              token: '1f41d9e0f188ec7aaae786cd4663766f4d11fc8a65fbedf08af234234b3dbe90', // yapi的项目token
              prefix: '/dsp', // 请求前缀
            },
          ],
        },
      });
   }
  },
};
3.数据格式
参数说明类型默认必传
yapiyapi配置yapiType
local本地已有mock文件入口string
proxy代理转发{key: string: string}
delay请求返回时长number100

yapiType类型

参数说明类型必传
originyapi对应的源地址string
response用于覆盖所有yapi返回的数据{key: string: any}
projectsyapi项目配置projectsType

projectsType类型

参数说明类型必传
originyapi对应的源地址string可选
idyapi项目idnumber
tokenyapi项目tokenstring
prefixapi访问前缀string
response用于覆盖所有yapi返回的数据{key: string: any}
proxy兜底api-没有mock数据走proxystring
4.本地Mock合并
// method   完整路径
  'POST /api/member/proxy/auth/registerr': {
    delay: 1200,
    disabled: true, // 是否禁用mock
    mergeable: true, // 是否合并yapi生成的mock数据
    response: { // 用于合并覆盖当前接口返回的数据
      message: '请求成功',
    },
    tesing: 'a', // 手动mock数据  使用scenes ‘a’里的数据
    tesing: 'res1',
    testcase: {
      res1: {
        body: {
          string: '多场景数据1',
          number: '多场景数据1',
        },
      },
      res2: {
        body: {
          string: '多场景数据2',
          number: '多场景数据2',
        },
      },
      res3: {
        body: {
          string: '多场景数据3',
          number: '多场景数据3',
        },
      },
    }
  }