import mockjs from 'mockjs'; import { getRule, postRule } from './mock/rule'; import { getActivities, getNotice, getFakeList, postFakeList } from './mock/api'; import { getFakeChartData } from './mock/chart'; import { getProfileBasicData } from './mock/profile'; import { getProfileAdvancedData } from './mock/profile'; import { getNotices } from './mock/notices'; import { format, delay } from 'roadhog-api-doc'; import { getProvince, getCity, getArea } from './mock/geographic/geographic'; // 是否禁用代理 const noProxy = process.env.NO_PROXY === 'true'; // 代码中会兼容本地 service mock 以及部署站点的静态数据 const proxy = { // 支持值为 Object 和 Array 'GET /api/currentUser': { $desc: '获取当前用户接口', $params: { pageSize: { desc: '分页', exp: 2, }, }, $body: { name: 'Serati Ma', avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', userid: '00000001', email: 'antdesign@alipay.com', profile: '简单的介绍下自己', signature: '海纳百川,有容乃大', title: '交互专家', group: '蚂蚁金服-平台数据技术事业群-基础平台部-用户体验技术部-UED', tags: [{ key: '0', label: '很有想法的', }, { key: '1', label: '专注设计', }, { key: '2', label: '辣~', }, { key: '3', label: '大长腿', }, { key: '4', label: '川妹子', }, { key: '5', label: '海纳百川', }], notifyCount: 12, country: 'China', geographic: { province: { label: '浙江省', key: '330000', }, city: { label: '杭州市', key: '330100', }, }, address: '西湖区工专路 77 号', phone: '0752-268888888', }, }, // GET POST 可省略 'GET /api/users': [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ], 'GET /api/project/notice': getNotice, 'GET /api/activities': getActivities, 'GET /api/rule': getRule, 'POST /api/rule': { $params: { pageSize: { desc: '分页', exp: 2, }, }, $body: postRule, }, 'POST /api/forms': (req, res) => { res.send({ message: 'Ok' }); }, 'GET /api/tags': mockjs.mock({ 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }], }), 'GET /api/fake_list': getFakeList, 'POST /api/fake_list': postFakeList, 'GET /api/fake_chart_data': getFakeChartData, 'GET /api/profile/basic': getProfileBasicData, 'GET /api/profile/advanced': getProfileAdvancedData, 'POST /api/login/account': (req, res) => { const { password, userName, type } = req.body; if (password === '888888' && userName === 'admin') { res.send({ status: 'ok', type, currentAuthority: 'admin', }); return; } if (password === '123456' && userName === 'user') { res.send({ status: 'ok', type, currentAuthority: 'user', }); return; } res.send({ status: 'error', type, currentAuthority: 'guest', }); }, 'POST /api/register': (req, res) => { res.send({ status: 'ok', currentAuthority: 'user' }); }, 'GET /api/notices': getNotices, 'GET /api/500': (req, res) => { res.status(500).send({ timestamp: 1513932555104, status: 500, error: 'error', message: 'error', path: '/base/category/list', }); }, 'GET /api/404': (req, res) => { res.status(404).send({ timestamp: 1513932643431, status: 404, error: 'Not Found', message: 'No message available', path: '/base/category/list/2121212', }); }, 'GET /api/403': (req, res) => { res.status(403).send({ timestamp: 1513932555104, status: 403, error: 'Unauthorized', message: 'Unauthorized', path: '/base/category/list', }); }, 'GET /api/401': (req, res) => { res.status(401).send({ timestamp: 1513932555104, status: 401, error: 'Unauthorized', message: 'Unauthorized', path: '/base/category/list', }); }, 'GET /api/geographic/province': getProvince, 'GET /api/geographic/city/:province': getCity, }; export default (noProxy ? {} : delay(proxy, 1000));