首頁 > 軟體

Vue+Mockjs模擬curd介面請求的範例詳解

2022-07-11 22:00:57

在前後端分離的專案中常常會遇到當前端頁面開發完成
但是後端介面還沒好,暫不支援聯調的情況下,一般我們會用到mock資料
這邊簡單說一下最常見且經常會遇到的curd介面模擬
注:這邊可以和後端先約定好介面路徑以及入參返參的欄位,避免二次修改

1.安裝依賴,新建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)",
        })
    )
}

2.查詢列表介面模擬

 {
        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
                }
            };
        }
    },

3.刪除功能介面模擬

 {
        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'
            }
        }
    },

4.儲存及編輯介面模擬

{
        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的介面


IT145.com E-mail:sddin#qq.com