utils/request.js
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
const service = axios.create({
// baseURL:process.env.VUE_APP_BASE_API,
// withCredentials: false, // 默认的
timeout: 1000,
})
service.interceptors.request.use(config =>{
console.log(config)
return config
}, function (error){
console.log(error);
return Promise.reject(error);
})
service.interceptors.response.use(
response=>{
const res = response.data;
if(res.code !== 20000) {
Message({
message: res.message || 'Error',
type:'error',
duration: 5* 1000
})
if(res.code === 50008 || res.code === 50012 || res.code === 50014) {
MessageBox.confirm("You have been logged out, you can cancel to stay on this page, or log in again","Confirm logout",{
confirmButtonText:'Re-Login',
cancelButtonText:"Cancel",
type:"warning"
}).then(()=>{
})
}
return Promise.reject(new Error(res.message || 'Error'))
}else {
return res
}
}
)
export default service
index.js
const Mock = require('mockjs')
const { param2Obj } = require('../src/utils')
const menu= require('./menu')
const mocks = [
...menu,
]
function mockXHR() {
Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send
Mock.XHR.prototype.send = function() {
if (this.custom.xhr) {
this.custom.xhr.withCredentials = this.withCredentials || false
if (this.responseType) {
this.custom.xhr.responseType = this.responseType
}
}
this.proxy_send(...arguments)
}
function XHR2ExpressReqWrap(respond) {
return function(options) {
let result = null
if (respond instanceof Function) {
const { body, type, url } = options
result = respond({
method: type,
body: JSON.parse(body),
query: param2Obj(url)
})
} else {
result = respond
}
return Mock.mock(result)
}
}
for (const i of mocks) {
console.log(i)
Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response))
}
}
module.exports = {
mocks,
mockXHR
}
mock/menu.js
module.exports = [
{
url: '/vue-element-admin/menu',
type: 'get',
response: () => {
return {
code: 20000,
data: '111111111'
}
}
},
]
api/menu.js
import request from '@/utils/request'
export function getMenu() {
return request({
url: '/vue-element-admin/menu',
method: 'get'
})
}