1.0.4 • Published 5 years ago

koa-mock-md v1.0.4

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

该koa中间件是通过拦截http请求来模拟接口数据

通用使用

const Koa = require('koa');
const mock = require('koa-mock-md');
const app = new Koa();

// 引入mock中间件
app.use(mock({
  mock: true, // 是否开启mock
  route: '/api', // 匹配路由, 可以是正则表达是,函数,和字符串
  root: './mock', // 本地存放mock js目录
  bodyString: true // 返回的数据格式是否是字符串
}));

app.listen(3000);

示例

  • 假设请求接口路由为/api/user/getUserInfo
  • 本地配置模拟文件yourproject/mock/api/user/getUserInfo.js,可以针对不同的接口要求定制返回数据:
  1. 正常返回数据

      console.log(ctx.query);
      next(null, {
        code: 1,
        data: {
          id: 1,
          username: 'showjoy',
          age: 28,
          sex: male
        },
        message: 'success'
      })
  2. 错误

      let err = new Error('nono');
      err.statusCode = 300; // 不设置,默认是500
      next(err);
  3. 定制返回头

      ctx.set('Set-Cookie', ['a=3']);
      // or
      ctx.cookies.set('name', 'showjoy');
      
      next(null, {
        code: 2,
        data: 'b',
        message: 'a'
      });

Bucky使用

安装

 npm i @lianjia/koa-mock-md

在server/src/services目录创建mock.js

import mock from '@lianjia/koa-mock-md';
import path from 'path';

export default () => mock({
  // 需要mock的环境 development
  mock: ['development'].includes(process.env.NODE_ENV),
  // 这里可以根据路径自定义返回需要mock的路径
  // 可以按目录来分模块mock,也可单独,全局匹配
  route: p => /^\/api/.test(p),
  // mock文件路径
  root: path.join(__dirname, '../../../mock'),
});

mock接口文件

比如client端定义的接口:

/**
 * 基础配置
 */
@GET('v1/config/base')
fetchConfigMap() {
}

那么在mock文件夹中创建一个v1/config/base.js即可,具体使用可以看上面的‘示例’