//經過配置devServer.before選項,設置url訪問路徑及response響應數據,進行mock數據。 const { data } = require('./data.json') // 引入json數據對象 //vue.config.js配置文件中進行Vue CLI的配置 module.exports = { //... devServer: { before: function(app, server) { app.get('/api/data', function(req, res) { res.json({ data: data, errno: 0 }); }); } } };
import axios from 'axios' const ERRNO = 0 //經過函數柯力化,接收url做爲參數,以返回新的函數接收額外的參數做爲axios配置項 function get (url) { return function (params) { return axios.get(url, { params }).then((res) => { const { errno, data } = res.data if (errno === ERRNO) { return data } }).catch((e) => { }) } } const getData = get('api/data') getSeller().then(res => { console.log(res) })
使用Mock.mock(),根據數據模板生成模擬數據。vue
import Mock from 'mockjs' import data from './bookHome' //導入存放模擬json數據的js文件 Mock.mock(/\/api\/data/, 'get', home) //表示須要攔截的 URL,能夠是 URL 字符串或 URL 正則。 //表示須要攔截的 Ajax 請求類型。例如 GET、POST、PUT、DELETE 等。 //表示數據模板,能夠是對象或字符串。例如 { 'data|1-10':[{}] }、'@EMAIL'。
/* axios獲取mock數據 */ import axios from 'axios' export function getData() { return axios({ method: 'get', url: `${process.env.VUE_APP_BOOK_URL}/api/data` //經過環境指定的默認地址設定接口url,方便後續調用 }) } //接口方法返回promise對象,最終獲取mock數據 getData().then(response => { if (response && response.status === 200) { const data = response.data console.log(data) } })