目录结构
目录结构
请求封装
import axios from 'axios'
import qs from 'qs'
import { Message, MessageBox } from 'element-ui'
import store from '../store'
const server=axios.create({
// baseURL: process.env.VUE_APP_BASE_API, // api的base_url
baseURL: 'http://asd.v.com',
timeout: 15000 // 请求超时时间
})
server.interceptors.request.use(
config=>{
console.log("token",store.getters.token)
if (store.getters.token) {
let test = config.data
if (test) {
config.data['access_token'] = getToken()
if (config.type == 'file') {
config.headers['Content-Type'] = 'multipart/form-data'
} else if (config.type === 'unjson') {
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
config.data = qs.stringify(config.data)
} else {
config.headers['Content-Type'] = 'application/json; charset=UTF-8'
}
}
config.headers['Authorization'] = 'bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
} else {
//config.headers['client_id'] = 'app';
// config.headers['client_secret'] = 'app';
config.headers['Authorization'] = 'Basic ' + window.btoa('app:app')
}
return config
},
error=>{
console.log(error) // for debug
Promise.reject(error)
}
)
server.interceptors.response.use(
response => {
/**
* code为非200是抛错 可结合自己业务进行修改
*/
console.log(response)
const res = response.data
if (res.code == 200) {
return response.data
} else {
// 401:未登录;
if (res.code === 401 || res.code === 403 || res.code === 1) {
MessageBox.confirm(
'你已被登出,可以取消继续留在该页面,或者重新登录',
'确定登出',
{
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => {
store.dispatch('user/loginOut').then(() => {
location.reload() // 为了重新实例化vue-router对象 避免bug
})