Vue+Mockjs如何模拟curd接口请求

更新日期: 2022-07-11 阅读: 1.7k 标签: mock

在前后端分离的项目中常常会遇到当前端页面开发完成,但是后端接口还没好,暂不支持联调的情况下,一般我们会用到mock数据。这边简单说一下最常见且经常会遇到的curd接口模拟
注:这边可以和后端先约定好接口路径以及入参返参的字段,避免二次修改

安装依赖,新建js文件,在文件中导入mock.js,模拟列表数据

yarn add mockjs
const Mock = require("mockjs")

const list = []
const length = 18
for (let i = 0; i < length; i++) {
    list.push(
        Mock.mock({
            id: '@id',
            account: '@first',
            name: '@name',
            email: '@email',
            mobile: '@phone',
            sex: '@integer(0,1)',
            type: "@integer(100,101)",
            status: "@integer(0,1)",
        })
    )
}

查询列表接口模拟

  {
        url: "/user/getPageList",
        type: "post",
        response: config => {
            // 拿到入参
            const {
                name,
                account,
                status,
                type,
                pageNum,
                pageSize,
            } = config.body;
            // 做一些查询条件的处理
            const mockData = list.filter(item => {
                if (name && item.name.indexOf(name) < 0) return false
                if (account && item.account.toString() !== account) return false
                if (status && item.status.toString() !== status) return false
                if (type && item.type.toString() !== type) return false
                return true
            })
            // 模拟分页
            const pageList = mockData.slice((pageNum - 1) * pageSize, pageNum * pageSize)
            // 返回数据
            return {
                resultCode: "1",
                messageCode: null,
                message: null,
                data: {
                    list: pageList,
                    total: mockData.length
                }
            };
        }
    },

删除功能接口模拟

 {
        url: "/user/removeRow",
        type: "post",
        response: config => {
            const {
                id
            } = config.body
            // 根据id找到需要删除的元素索引
            const index = list.findIndex(item => item.id === id)
            // 调用splice删除
            list.splice(index, 1)
            return {
                resultCode: "1",
                messageCode: null,
                message: null,
                data: 'success'
            }
        }
    },

保存及编辑接口模拟

 {
        url: "/user/saveForm",
        type: "post",
        response: config => {
            const {
                id
            } = config.body
            if (id) {
                // 关键在于id,其他入参不多赘述,格局id找到那条数据调用splice替换
                const index = list.findIndex(item => item.id === id)
                list.splice(index, 1, config.body)
            } else {
                // 如果id不存在则在列表添加一条数据
                list.unshift(
                    Mock.mock({
                        id: '@id',
                        ...config.body
                    })
                )
            }
            return {
                resultCode: "1",
                messageCode: null,
                message: null,
                data: 'success'
            }
        }
    },

如上便是简易的curd接口模拟,具体mock-server.js的配置可去网上查阅
所有接口使用module.exports导出后,在调用时就会执行mock的接口

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/article/detial/11874

前后端分离之让前端开发脱离接口束缚(mock)

前后端分重构完成,再书写交互时遇到后台接口尚未完成,无法得到接口返回的测试数据,但是我们又需要一些数据来测试我们的前端功能的时候,所以呢,今天学习的关于前端模拟AJAX的三种办法,用于应对以上情况,加快开发效率;

浅谈前端mock

何为mock,我认为mock主要就是通过正常请求在后端接口进度落后的情况下,还能获取到和后端约定数据结构一样的模拟数据的一门技术,以避免后端接口进度滞后影响我们正常的开发。mock可能会涉及到4门技术,分别是服务端技术、随机生成特定格式数据的技术、请求转发、请求拦截。

mockjs区分环境,过程很有趣

网上找了很多mockjs(是mockjs不是其他的mock插件)环境的配置, 基本全是错的.生产环境不需要mock, 开发环境有时需要mock有时不需要mock.可能这个功能点太小了, 导致大家都不在乎.

前端mock完美解决方案实战

本文阅读需要一定Nodejs的相关知识,因为会扩展webpack的相关功能,并且实现需要遵守一定约定和Ajax封装。沉淀的脚手架也放到Github上供给同学参考React-Starter, 使用手册还没写完善, 整体思路和React还是Vue无关

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!