小小园丁

Mock数据

1、Mock数据是前端开发过程必不可少得一环,使得前端开发独立自主。

2、umi里约定mock文件夹下得文件或者page(s)文件夹下得_mock文件即mock文件,文件导出接口定义,支持基于require动态分析得实时刷新。支持ES6。 可以直接返回数据,也可以通过函数处理以及重定向到另一个服务器。

3、引入Mock.js

Mock.js使用辅助生成模拟数据,


import mockjs from 'mockjs';

export default {
'GET /api/users': { users: [1, 2] },

'/api/users/1': { id: 1 },

'POST /api/users/create': (req, res) => {
res.end('OK');
},

//设置response返回得请求头
'POST /api/users/create': (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
},
};

export const mocks = {
'GET /api/tags': mockjs.mock({
'list|100': [{ name: '@city', 'value|1-100': 50, 'type|0-2': 1 }],
}),
};

4、对于整个系统来说,接口是复杂繁多得。可以分开放置,统一放在mock文件夹中

 

5、使用setTimeout延迟返回值

'POST /api/forms': (req, res) => {
  setTimeout(() => {
    res.send('Ok');
  }, 1000);
},

6、使用插件模拟延迟

import { delay } from 'roadhog-api-doc';  //roadhog-api-doc#delay
import { delay } from 'roadhog-api-doc';

const proxy = {
  'GET /api/project/notice': getNotice,
  'GET /api/activities': getActivities,
  'GET /api/rule': getRule,
  'GET /api/tags': mockjs.mock({
    'list|100': [{ name: '@city', 'value|1-100': 50, 'type|0-2': 1 }]
  }),
  'GET /api/fake_list': getFakeList,
  'GET /api/fake_chart_data': getFakeChartData,
  'GET /api/profile/basic': getProfileBasicData,
  'GET /api/profile/advanced': getProfileAdvancedData,
  'POST /api/register': (req, res) => {
    res.send({ status: 'ok' });
  },
  'GET /api/notices': getNotices,
};

// 调用 delay 函数,统一处理
export default delay(proxy, 1000);

7、动态生成Mock数据

// 静态的
'/api/random': Mock.mock({
  // 只随机一次
  'number|1-100': 100,
}),

// 动态的
'/api/random': (req, res) => {
  res.send(Mock.mock({
    // 每次请求均产生随机值
    'number|1-100': 100,
  }))
},

 

posted on 2019-06-28 14:43  小小园丁  阅读(26)  评论(0编辑  收藏  举报

导航