import axios from 'axios'
import VueAxios from 'vue-axios'
axios.defaults.timeout = 60000; //请求超时5秒
// 测试服地址 请求base url
// axios.defaults.baseURL ="/api";
// 测试服地址 请求base url
// axios.defaults.baseURL ="http://xxxxxx/";
// 正式服地址 请求base url
axios.defaults.baseURL ="http://xxxxxxx";
//设置post请求是的header信息
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 如果需要使用session验证码功能,让请求携带cookie,可以加上以下一行
// axios.defaults.withCredentials = true
//http request 拦截器
axios.interceptors.request.use(
config => {
let token = sessionStorage.getItem('token')
if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers = {
'X-token': token
}
console.log("有token")
}else{
console.log("没有token")
}
return config
},
err => {
return Promise.reject(err)
}
)
// 请求返回时的拦截器
axios.interceptors.response.use(
response => {
console.log(response.status)
if (response.status === 200) {
//返回成功
return response;
}
},
err => {
if (err.code === 'ECONNABORTED' && err.message.indexOf('timeout') !== -1) {
console.log("网络超时")
}
return Promise.reject(err)
}
)
/**
* 封装get方法
* @param url
* @param data
* @returns {Promise}
*/
export function get(url, params={}){
return new Promise((resolve, reject) => {
axios.get(url,{
params: params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
reject(err)
})
})
}
/**
* 封装post请求
* @param url
* @param data
* @returns {Promise}
*/
export function post(url, data = {}){
return new Promise((resolve, reject) => {
axios.post(url, data)
.then(response => {
console.log(response)
resolve(response);
}, err => {
reject(err)
})
})
}
export function postUpload(url,data={}){
return new Promise((resolve,reject)=>{
axios.post(url, data, {headers: {
'Content-Type': 'multipart/form-data'
}}).then(response => {
resolve(response);
},err => {
reject(err)
})
})
}
export default{
name:'http'
}
axios框架常用封装
最新推荐文章于 2022-07-28 21:18:03 发布