ykit-config-mock

需要 ykit 版本 >= 0.5.0

Features

安装

在项目中执行:

  1. $ npm install ykit-config-mock --save

编辑 ykit.js,引入插件:

  1. module.exports = {
  2. plugins: ['mock']
  3. // ...
  4. };

或者如果需要添加插件的选项,也可以传入一个对象:

  1. module.exports = {
  2. plugins: [{
  3. name: 'mock',
  4. options: {
  5. // 插件选项
  6. }
  7. }]
  8. // ...
  9. };

如何配置 mock 规则

在项目根目录下创建 mock.js:

  1. module.exports = [
  2. {
  3. pattern: /\/testA\.com\/(.*)\.do/, // 匹配一类接口,如 /test.com/list.do -> ./mockData/list.json
  4. responder: './mockData/$1.json'
  5. },
  6. {
  7. pattern: /\/testB\.com\/person\.do/, // 直接返回数据
  8. responder: {id: 'abc'}
  9. },
  10. {
  11. pattern: '/testC.com/query.do', // pattern 为字符串
  12. responder: {id: 'abc'}
  13. }
  14. ];

动态数据

可以通过定义数据模板来返回动态 mock 数据,具体规则查看这里

  1. {
  2. pattern: '/test.com/query.do',
  3. responder: {
  4. "array|1-10": [
  5. "Mock.js"
  6. ]
  7. }
  8. }
  9. // 返回数据:
  10. // {
  11. // "array": [
  12. // "Mock.js",
  13. // "Mock.js",
  14. // "Mock.js",
  15. // "Mock.js"
  16. // ]
  17. // }

获取远程数据(Map Remote)

将接口转到远端来获取数据。

  1. {
  2. pattern: '/test.com/query.do',
  3. responder: 'http://yapi.corp.qunar.com/mock/58/getItems'
  4. }

这意味着也可以用它来做类似 Map Remote 的功能:

  1. {
  2. // 添加了 .json 后缀是为了防止 .js 等资源也被 Mock 服务处理。
  3. pattern: /\/(.*)\.json/,
  4. responder: 'http://yapi.corp.qunar.com/$1.json'
  5. }

上面通过正则匹配,将所有接口转到 http://yapi.corp.qunar.com 上,比如 http://localhost/getItems.json 会成为 http://yapi.corp.qunar.com/getItems.json

通过函数处理返回

  1. {
  2. pattern: '/test.com/query.do',
  3. responder: function(req, res) { // 两个参数,req 为请求对象,res 为返回对象
  4. // 这里可以有更多其他的处理过程
  5. // 从 req 中可以获取 req.cookies\req.query\req.body 等
  6. res.end(JSON.stringify({
  7. "ret": true,
  8. "data": {
  9. "name": "Li Lei",
  10. "email": "lilei@test.com",
  11. "registerDateTime": "2020-10-01 22:11:11"
  12. }
  13. }))
  14. }
  15. }

jsonp

  1. {
  2. pattern: '/api/list.json',
  3. responder: './data/listData.json',
  4. jsonp: 'jsCallback' // jsonp 请求的回调函数名,默认为 "callback"
  5. }

options

mock 插件会自动寻找项目根目录下的 mock.js 或者 mock.json,你也可以通过 options 手动指定一个 mock 配置的路径:

  1. module.exports = {
  2. plugins: [{
  3. name: 'mock',
  4. options: {
  5. confPath: './src/mock/mockconf.js'
  6. }
  7. }],
  8. // ...
  9. };

关闭 mock

启动 ykit server 时追加参数即可:

  1. $ sudo ykit s mock=false

示例

https://github.com/roscoe054/ykit-starter-mock