import axios from 'axios';
import store from '@/store/index.js'
import il8n from '@/lang/il8n.js'
import router from '@/router/index.js'
import {
Modal
} from 'iview'
function getQueryString(name){
// 获取参数
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
localStorage.setItem('authorizationToken', r[2])
return r[2]
}
}
// 错误提示
function errorHints(title,error) {
if (typeof error.response.data == 'string') {
Modal.error({
title,
content: error.response.data
});
} else {
if (error.response.data.errors) {
let errors = error.response.data.errors
let messages = []
for (let filed in errors) {
messages.push(errors[filed][0])
}
Modal.error({
title,
content: messages[0]
});
} else {
if (error.response.data.message) {
Modal.error({
title,
content: error.response.data.message
});
}
}
}
}
let apiAddress = process.env.API_BASE + '/pc';
//有通用配置的axios实例;axios#get(url[, config]);axios#post(url[, data[, config]])
const request = axios.create({
baseURL: apiAddress,
timeout: 30000,
withCredentials: true,
headers: {
'Accept': 'application/json',
},
});
//即可调用方法,和axios实例同
//request.get('apiAddress').then(Response=>{
// console.log(Response);
//});
// request拦截器
request.interceptors.request.use(config => {
let authorizationToken = localStorage.getItem('authorizationToken')
if (config.method === 'post') {
config.data = {
...config.data,
ua: 'h5'
}
} else if ( config.method === 'get' ){
config.params = {
...config.params,
ua: 'h5'
}
}
if (authorizationToken) {
config.headers['Authorization'] = `Bearer ${authorizationToken}`
} else {
let au = getQueryString('token');
if (au != null) {
config.headers['Authorization'] = `Bearer ${au}`
}
}
return config
}, error => {
return Promise.reject(error);
});
// response拦截器
request.interceptors.response.use(response => {
return response
}, error => {
if (error.response) {
const title = il8n.t('Tips')
//
switch (error.response.status) {
case 401:
Modal.error({
title,
content: '请登录后操作',
onOk: () => {
store.dispatch('user/getOtoken').then(() => {
router.push('/login')
})
}
});
break;
case 419:
Modal.error({
title,
content: '登录失效,请重新登录',
onOk: () => {
store.dispatch('user/getOtoken').then(() => {
router.push('/login')
})
}
});
break;
default:
errorHints(title,error)
}
}
return Promise.reject(error);
})
export default request;
router(utils/request.js 全局请求;路由拦截)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近在学习微信小程序,网上搜索方法对wx.request 进行了下封装好了,我就之间上代码了 首先在全局app.j...
- 这是刘润老师“五分钟商学院”第五周的第二篇学习笔记:微观经济学之“边际效用”。 概念:边际效用 定义 :你每多消费...