Mock 模拟数据

前后端并行开发,为了方便后端快速开发,不需要等待后端接口,系统提供了mock功能。基于mockjs

编写模拟数据

在/src/mock目录下进行mock数据编写,比如:

  1. import {getUsersByPageSize} from './mockdata/user';
  2. export default {
  3. 'post /mock/login': (config) => {
  4. const {
  5. userName,
  6. password,
  7. } = JSON.parse(config.data);
  8. return new Promise((resolve, reject) => {
  9. if (userName !== 'test' || password !== '111') {
  10. setTimeout(() => {
  11. reject({
  12. code: 1001,
  13. message: '用户名或密码错误',
  14. });
  15. }, 1000);
  16. } else {
  17. setTimeout(() => {
  18. resolve([200, {
  19. id: '1234567890abcde',
  20. name: 'MOCK 用户',
  21. loginName: 'MOCK 登录名',
  22. }]);
  23. }, 1000);
  24. }
  25. });
  26. },
  27. 'post /mock/logout': {},
  28. 'get /mock/user-center': (config) => {
  29. const {
  30. pageSize,
  31. pageNum,
  32. } = config.params;
  33. return new Promise((resolve) => {
  34. setTimeout(() => {
  35. resolve([200, {
  36. pageNum,
  37. pageSize,
  38. total: 888,
  39. list: getUsersByPageSize(pageSize),
  40. }]);
  41. }, 1000);
  42. });
  43. },
  44. 'get re:/mock/user-center/.+': {id: 1, name: '熊大', age: 22, job: '前端'},
  45. 'post /mock/user-center': true,
  46. 'put /mock/user-center': true,
  47. 'delete re:/mock/user-center/.+': 'id',
  48. }

简化

为了方便mock接口编写,系统提供了简化脚本(/src/mock/simplify.js),上面的例子就是简化写法

对象的key由 method url delay,各部分组成,以空格隔开

字段说明
method请求方法 get post等
url请求的url
delay模拟延迟,毫秒 默认1000

调用

系统封装的ajax可以通过以下两种方式,自动区分是mock数据,还是真实后端数据,无需其他配置

mock请求:

  • url以/mock/开头的请求
  • /src/mock/url-config.js中配置的请求
  1. this.props.ajax.get('/mock/users').then(...);

如果后端真实接口准备好之后,去掉url中的/mock即可

注:mock功能只有开发模式下启用了,生产模式不会开启mock功能