import axios from 'axios'
import router from '../router/index'
import { Message } from 'element-ui'
import {
showFullScreenLoading,
tryHideFullScreenLoading
} from '@/utils/loading'
import { getToken, getUser } from '@/utils/auth'
import QS from 'qs' // 引入qs模块,用来序列化post类型的数据,后面会提到
// 创建axios实例
const service = axios.create({
baseURL: process.env.BASE_URL, // api的base_url
timeout: 5000 // 请求超时时间
})
// request拦截器
service.interceptors.request.use(
config => {
config.headers = {
UserId: getUser(),
Authorization: getToken()
}
showFullScreenLoading()
return config
},
error => {
Promise.reject(error)
}
)
// respone拦截器
service.interceptors.response.use(
response => {
//当返回信息为未登录或者登录失效的时候重定向为登录页面
tryHideFullScreenLoading()
return response
},
error => {
tryHideFullScreenLoading()
//当返回信息为未登录或者登录失效的时候重定向为登录页面
if (error.response.status == '401') {
router.push({
path: '/login',
query: { redirect: router.currentRoute.fullPath } //从哪个页面跳转
})
}
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
/**
* get方法,对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function get(url, params) {
return new Promise((resolve, reject) => {
service
.get(url, {
params: params
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err.data)
})
})
}
/**
* post方法,对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
service
.post(url, params)
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err.data)
})
})
}