本地mock.js在vue2中使用

文章介绍了如何安装和配置axios,以及在项目中使用mock.js来模拟API请求,包括全局配置axios,安装mock.js,设置模拟数据,并通过模块化的方式组织mock数据。同时,详细讲解了mocklist中每个模块的模拟数据编写,以及如何处理请求参数。
摘要由CSDN通过智能技术生成

1.安装axios

2.全局配置axios参数

 

 如果说项目里已经封装了,请求方法比如说request那就用就可以不需要安装axios了

3.安装mock.js

Mock.mock('url',get/post,'函数/模拟代码‘)前两个可以省略

有两种引用

第一种,常见重要

先建目录

index的作用是写连接url和mocklist里函数的作用

注意左侧的可以是字符串但是需要传入动态值所以用的是正则(这个用字符串也可以)

import Mock from 'mockjs'

import setApi from './mocklist/set'

Mock.mock(/dev-api\/set\/getsetlist/, 'get', setApi.getsetList)
Mock.mock(/dev-api\/set\/searchsetlist/, 'post', setApi.insertsetList)
Mock.mock(/dev-api\/set\/deletesetlist/, 'post', setApi.deletesetList)
Mock.mock(/dev-api\/set\/detailbyid/, 'post', setApi.deletesetList)

 需要引入setApi

extend,js是用来写自定义mock的数据的

import { random } from 'mockjs'
// 创建自定义 Mock 函数
random.extend({
    // 自定义函数名: function 函数
    fruit: function () {
        const arr = ['榴', "波罗蜜", "椰子", "苹果", "波萝", "释迦"]
        return this.pick(arr)
    }
})

mocklist里面一个js文件代表一个模块的模拟数据,里面写的是mock那块(只有模拟的数据并没有url和get/post,这部分在index里面写了),还有export 暴露出的函数,这个函数放到index里面的第三位

具体这个先将模拟数据放到了数组里这样可以模拟增删改查,之前使用apifox可以模拟查询,但是其他接口我没写明白,所以改用mockjs

parseobj是处理传入的请求url

然后请求体获取数据是用json.parse()转换成对象的

import Mock from 'mockjs'
let List = [];

const count = 10;

for (let i = 0; i < count; i++) {
    List.push(
        Mock.mock({
            "tetherName": "@cword(2,8)",
            "createBy": "string",
            "createTime": "string",
            "updateBy": null,
            "updateTime": '@datetime',
            "remark": null,
            "tetherId": '@integer(1,3)',
            "sellStatus": 0,
            "exchange": 0,
            "image": null,
            "showTimeStart": '@datetime',
            "showTimeEnd": '@datetime',
            "total": '@integer(60, 100)',
            "status": 0,
            "grounding": 0,
            "cochain": 0,
            "delFlag": "string"
        })
    )
}
console.log(List)
function paramObj(url) {
    const search = url.split('?')[1];
    if (!search) {
        return {}
    }
    return JSON.parse(
        '{"' +
        decodeURIComponent(search)
            .replace(/"/g, '\\"')
            .replace(/&/g, '","')
            .replace(/=/g, '":"') +
        '"}'
    )
}
export default {
    // getsetList: config => {
    //     const { name, page = 1, limit = 10 } = paramObj(config.url);
    //     const mockList = List.filter(user => {
    //         if (name && user.name.indexOf(name) === -1 && user.addr.indexOf(name) === -1) return false;
    //         return true;
    //     })
    //     const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1));
    //     return {
    //         code: 200,
    //         count: mockList.length,
    //         list: pageList
    //     }
    // },
    // searchsetList: config => {
    //     const { name } = paramObj(config.url);
    //     const searchList = List.filter(user => {
    //         return user.title === name;
    //     })
    //     return {
    //         code: 200,
    //         count: searchList.length,
    //         list: searchList
    //     }
    // },
    // detailsetNotic: config => {
    //     const { id } = paramObj(config.url);
    //     const detail = List.filter(user => {
    //         return user.id === id;
    //     })
    //     return {
    //         code: 200,
    //         data: detail
    //     }
    // }
    // deleteMessage: config => {
    //     const { id } = JSON.parse(config.body);
    //     if (!id) {
    //         return {
    //             code: -999,
    //             message: '参数不正确'
    //         }
    //     } else {
    //         List = List.filter(u => u.id !== id)
    //         return {
    //             code: 200,
    //             message: '删除成功'
    //         }
    //     }
    // },
    //自己写的非分页获取
    getsetList() {
        const mockList = List
        return {
            code: 200,
            count: mockList.length,
            list: mockList
        }
    },
    insertsetList: config => {
        const obj = JSON.parse(config.body);
        List.push(obj)
        return {
            insertMsg: obj,
            code: 200,
            list: List
        }
    },
    deletesetList: config => {
        const { id } = JSON.parse(config.body);
        if (!id) {
            return {
                code: -999,
                message: '参数不正确'
            }
        } else {
            List = List.filter(u => u.tetherId !== id)
            return {
                delid: id,
                code: 200,
                message: '删除成功',
                list: List
            }
        }
    },
    deletesetList: config => {
        const { id } = JSON.parse(config.body);
        if (!id) {
            return {
                code: -999,
                message: '参数不正确'
            }
        } else {
            const findvalue = List.find((value, index) => {
                return value.tetherId == id
            })
            return {
                detailid: id,
                code: 200,
                message: '删除成功',
                list: findvalue
            }
        }
    },
}

main里面引入index

 

 

 这种是模块化最好的一种办法

第二种

这种就是index里面只引用list里面的js文件

 然后还是把index引入到mock.js因为这样写只需要引入一个js文件到main里面

然后set.js里面就要写入完整的Mock.mock('url',get/post,'函数/模拟代码‘)

注意:第三位传入函数的话可以传入参数就是请求的参数body体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值