Skip to content

接口和数据模拟

网络请求

使用axios进行远程接口请求。

建议完善返回及请求数据的类型定义。

ts
import http from '@/utils/http'
export interface LoginData {
    username: string;
    password: string;
    key?:string,
    captcha?:string;
}

export function getCaptcha(){
    return http.get('/admin/login/captcha');
}

mock解决方案

ts
import Mock from 'mockjs';
import {
    successResponseWrap,
} from '@/utils/setup-mock';

Mock.mock(new RegExp('/api/chatList'), () => {
    const data = Mock.mock(successResponseWrap({
        'data|4-6': [
            {
                'id|+1': 1,
                username: '用户7352772',
                content: '马上就开始了,好激动!',
                time: '13:09:12',
                'isCollect|2': true,
            },
        ],
    }));

    return data.data;
});

当客户端发送请求的 url 被 new RegExp('/api/chatList') 匹配到,Mock.js 就会拦截这条请求,并执行对应的回调函数,返回回调函数中 return 的数据。

注意:被 Mock.js 匹配并拦截的请求,不会出现在开发者工具的 network 面板中。

关闭 Mock

为了方便开启和关闭数据模拟功能,每个 Mock 都会被 setupMock.setup 包裹,setupMock 如下:

ts
import { debug } from './env';
export default ({ mock, setup }: { mock?: boolean; setup: () => void; }) => {
    if (mock !== false && debug) setup();
};

非生产环境下默认启动数据模拟,当我们需要调试接口的时候只需要将 setupMock 的 mock 参数置为 false 即可,如下:

为了方便开启和关闭数据模拟功能,每个 Mock 都会被 setupMock.setup 包裹,setupMock 如下:

vue
import Mock from 'mockjs';
import setupMock from '../utils/setupMock';

setupMock({
    mock: false
    setup() {
        // 用户信息
        Mock.mock(new RegExp('/api/userInfo'), () => {
            return {
                name: 'name',
            };
        });
    },
});

基于 MIT 许可发布