.roadhogrc.mock.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import mockjs from 'mockjs';
  2. import { getRule, postRule } from './mock/rule';
  3. import { getActivities, getNotice, getFakeList } from './mock/api';
  4. import { getFakeChartData } from './mock/chart';
  5. import { imgMap } from './mock/utils';
  6. import { getProfileBasicData } from './mock/profile';
  7. import { getProfileAdvancedData } from './mock/profile';
  8. import { getNotices } from './mock/notices';
  9. import { format, delay } from 'roadhog-api-doc';
  10. // 是否禁用代理
  11. const noProxy = process.env.NO_PROXY === 'true';
  12. // 代码中会兼容本地 service mock 以及部署站点的静态数据
  13. const proxy = {
  14. // 支持值为 Object 和 Array
  15. 'GET /api/currentUser': {
  16. $desc: "获取当前用户接口",
  17. $params: {
  18. pageSize: {
  19. desc: '分页',
  20. exp: 2,
  21. },
  22. },
  23. $body: {
  24. name: 'Serati Ma',
  25. avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png',
  26. userid: '00000001',
  27. notifyCount: 12,
  28. },
  29. },
  30. // GET POST 可省略
  31. 'GET /api/users': [{
  32. key: '1',
  33. name: 'John Brown',
  34. age: 32,
  35. address: 'New York No. 1 Lake Park',
  36. }, {
  37. key: '2',
  38. name: 'Jim Green',
  39. age: 42,
  40. address: 'London No. 1 Lake Park',
  41. }, {
  42. key: '3',
  43. name: 'Joe Black',
  44. age: 32,
  45. address: 'Sidney No. 1 Lake Park',
  46. }],
  47. 'GET /api/project/notice': getNotice,
  48. 'GET /api/activities': getActivities,
  49. 'GET /api/rule': getRule,
  50. 'POST /api/rule': {
  51. $params: {
  52. pageSize: {
  53. desc: '分页',
  54. exp: 2,
  55. },
  56. },
  57. $body: postRule,
  58. },
  59. 'POST /api/forms': (req, res) => {
  60. res.send({ message: 'Ok' });
  61. },
  62. 'GET /api/tags': mockjs.mock({
  63. 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }]
  64. }),
  65. 'GET /api/fake_list': getFakeList,
  66. 'GET /api/fake_chart_data': getFakeChartData,
  67. 'GET /api/profile/basic': getProfileBasicData,
  68. 'GET /api/profile/advanced': getProfileAdvancedData,
  69. 'POST /api/login/account': (req, res) => {
  70. const { password, userName, type } = req.body;
  71. res.send({
  72. status: password === '888888' && userName === 'admin' ? 'ok' : 'error',
  73. type,
  74. });
  75. },
  76. 'POST /api/register': (req, res) => {
  77. res.send({ status: 'ok' });
  78. },
  79. 'GET /api/notices': getNotices,
  80. 'GET /api/500': (req, res) => {
  81. res.status(500).send({
  82. "timestamp": 1513932555104,
  83. "status": 500,
  84. "error": "error",
  85. "message": "error",
  86. "path": "/base/category/list"
  87. });
  88. },
  89. 'GET /api/404': (req, res) => {
  90. res.status(404).send({
  91. "timestamp": 1513932643431,
  92. "status": 404,
  93. "error": "Not Found",
  94. "message": "No message available",
  95. "path": "/base/category/list/2121212"
  96. });
  97. },
  98. 'GET /api/403': (req, res) => {
  99. res.status(403).send({
  100. "timestamp": 1513932555104,
  101. "status": 403,
  102. "error": "Unauthorized",
  103. "message": "Unauthorized",
  104. "path": "/base/category/list"
  105. });
  106. },
  107. };
  108. export default noProxy ? {} : delay(proxy, 1000);