vue項目中如何使用mock你知道嗎

Mock.js 是一款模擬數據生成器,旨在幫助前端攻城師獨立於後端進行開發,幫助編寫單元測試。提供瞭以下模擬功能:

  • 根據數據模板生成模擬數據
  • 模擬 Ajax 請求,生成並返回模擬數據
  • 基於 HTML 模板生成模擬數據

第一步:

npm install mockjs // 安裝mockjs
npm install axios

第二步,在request.js中進行相關配置,request.js代碼如下:

import axios from 'axios'
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-urlencoded'
const http = axios.create()
 http.defaults.timeout = 3000
 http.interceptors.request.use(config => { // 請求攔截器配置 // 可不配置
    // do sth
    return config
}, error => {
    console.log(error)
    return Promise.reject(error)
})
 http.interceptors.response.use(response => { // 響應攔截器配置 // 可不配置
    // do something
    return response
}, error => {
    console.log(error)
    return Promise.reject(error)
})
 export function fetch(url, params) { // 封裝axios的post請求
    return new Promise((resolve, reject) => { // promise 用法,自行查閱
        axios.post(url, params).then(response => {
            resolve(response.data) // promise相關
        }).catch(error => {
            reject(error) // promise相關
        })
    })
}
 export default { // 暴露htto_mock方法,即後面頁面中用到的方法
    http_mock(url, params) {
        return fetch(url, params)
    }
}

第三步,在mock.js中進行相關配置,mock.js代碼如下:

import Mock from 'mockjs'
 const Random = Mock.Random
 var listData = function() {
    let _data = {
        status: 200,
        message: 'success',
        data: {
            total: 100,
            'rows|10': [{
            id: '@guid',
            name: '@cname',
            'age|20-30': 23,
            'job|1': ['前端工程師', '後端工程師', 'UI工程師', '需求工程師']
            }]
        }
    }
    return { _data }
}
// url為要攔截的請求地址  請求方式  請求數據(規則) (此處api會被mockjs攔截)
Mock.mock('http://route.showapi.com/60-27', 'post', listData())
 

第四步,在main.js中需引入mock.js即可

import mock from '@/http/mock'

第五步,在頁面中使用

import request from '@/http/request'
 export default {
    name: "FirstPage",
    created() {
        this.getData()
    },
    methods: {
        getData() {
             // 假裝要使用http_mock發送請求(mock自動攔截請求並生成數據)
         // 此處第一個參數需要和Mock.mock()中的第一個參數一致
            console.log('請求開始')
            request.http_mock('http://route.showapi.com/60-27','api_id=63114&api_sign=3847b0').then(response => {
            console.log(response._data)
            })
       },
    }
}

效果如下:

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: