import axios from 'axios'
import router from '../router/index'
import {
Loading,
Message
} from 'element-ui'
import QS from 'qs'
import store from '../store/store.js'
import basic from '@/data/basic'
import urlConst from './urlConst'
axios.defaults.withCredentials = false // 是否允许携带cookie
// http request 拦截器
axios.interceptors.request.use(
config => {
config.data = JSON.stringify(config.data)
config.paramsSerializer = (params) => {
return QS.stringify(params, {
indices: false
})
}
if (store.state.sessionid) {
config.headers.common['Authorization'] = store.state.sessionid
}
return config
},
error => {
return Promise.reject(error)
}
)
// http response 拦截器
axios.interceptors.response.use(
response => {
// console.log(response)
if (response.data.error_code == '-1' && response.data.msg == "请登录") {
let loadingInstance = basic.getloading()
if (loadingInstance != null) {
loadingInstance.close()
}
store.commit("removeUserLoginInfo");
store.commit("removeMenuData");
store.commit("removeOperline");
store.commit("removeSessionid");
router.push({
path: '/login',
querry: {
redirect: router.currentRoute.fullPath
} // 从哪个页面跳转
})
} else if (response.data.error_code == '-10') {
let loadingInstance = basic.getloading()
if (loadingInstance != null) {
loadingInstance.close()
}
Message({
type: 'warning',
message: response.data.msg
})
// window.location.href='/home'
router.push({
path: '/home',
querry: {
redirect: router.currentRoute.fullPath
} // 从哪个页面跳转
})
}
return Promise.resolve(response.data)
},
error => {
let loadingInstance = basic.getloading()
if (loadingInstance != null) {
loadingInstance.close()
}
return Promise.reject(error)
}
)
/***
* 封装 HTTP 请求
* @param url
* @param data
* @return {Promise}
*/
function apiAxios(method, url, params, header = 'json') {
let headers = {
'Content-Type': 'application/' + header + ';charset=UTF-8'
}
return axios({
method: method,
url: urlConst.official + url,
data: method === 'POST' || method === 'PUT' ? params : null,
params: method === 'GET' || method === 'DELETE' ? params : null,
headers
// headers: method === 'POST' || method === 'PUT' ? { 'Content-Type': 'application/json;charset=UTF-8' } : { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }
})
}
function apiAxios1(method, url, params) {
return axios({
method: method,
url: urlConst.official1 + url,
data: method === 'POST' || method === 'PUT' ? params : null,
params: method === 'GET' || method === 'DELETE' ? params : null,
headers: method === 'POST' || method === 'PUT' ? {
'Content-Type': 'application/json;charset=UTF-8'
} : {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
})
}
export default {
get: function(url, params, headers) {
return apiAxios('GET', url, params, headers)
},
post: function(url, params, headers) {
return apiAxios('POST', url, params, headers)
},
put: function(url, params) {
return apiAxios('PUT', url, params)
},
delete: function(url, params) {
return apiAxios('DELETE', url, params)
},
get1: function(url, params) {
return apiAxios1('GET', url, params)
},
post1: function(url, params) {
return apiAxios1('POST', url, params)
},
}
// export default {
// get: function (url, params) {
// return new Promise((resolve, reject) =>{
// axios.get(urlConst.official+url, {
// params: params
// })
// .then(res => {
// resolve(res.data);
// })
// .catch(err => {
// reject(err)
// })
// });
// },
// post: function (url, params) {
// return new Promise((resolve, reject) => {
// axios.post(urlConst.official+url, QS.stringify(params))
// .then(res => {
// resolve(res.data);
// })
// .catch(err => {
// reject(err)
// })
// });
// },
// }
axios封装
最新推荐文章于 2024-02-21 15:12:50 发布