axios封装
1.api public.js
import Vue from 'vue'
import axios from 'axios'
import { Toast } from 'mint-ui'
import { Indicator } from 'mint-ui';
import { getCookie, setCookie, delCookie } from '@/utils/cookie.js'
//axios.defaults.withCredentials = true
axios.defaults.baseURL = process.env.API_ROOT
//axios.defaults.baseURL = 'http://dev-school.api.com'
axios.defaults.headers.post['Content-Type'] = 'application/json'
import Storage from '@/utils/storage.js'
import router from '../router'
import store from '../store'
const service = axios.create({
timeout: 10000 // request timeout
})
// http request 拦截器
service.interceptors.request.use(
config => {
//config.headers.Accept = 'application/json'
//config.headers['Content-Type'] = 'application/json'
config.headers.Platform = 'client'
if(Storage.get('token')) { // 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.Authorization = Storage.get('token')
}
Indicator.open();
return config
},
err => {
return Promise.reject(err)
}
)
// http response 拦截器
service.interceptors.response.use(
response => {
Indicator.close();
if(response.data.code === 403 || response.data.code === 401 || response.data.code === 402 || response.data.code === 406) {
try{
Storage.clear();
delCookie('token')
delCookie('student')
delCookie('teacher')
window.app.GoToIntroduce()
}catch(e){
Storage.clear();
delCookie('token')
delCookie('student')
delCookie('teacher')
Toast(response.data.msg)
setTimeout(() => {
let type = store.state.user_type;
let redirectUrl = '/' //type == 1 ? '/' : '/entry/login';
router.replace(redirectUrl)
router.go(0)
}, 1000)
}
} else {
return response.data
}
},
error => {
Indicator.close();
delCookie('token')
delCookie('student')
delCookie('teacher')
console.info(' error ', error.response)
return Promise.reject(error) // 返回接口返回的错误信息
});
export default service
2.封装api
import request from './public'
export default {
httpRequest: function(methond, path, params, success, failure) {
let reqSetting = {
url: path,
method: methond,
};
if (methond == 'get'){
reqSetting['params'] = params;
}
else {
reqSetting['data'] = params;
}
return request(reqSetting).then(response => {
if (success) {
if (response.data != undefined && response.code == 0) {
success(response.data);
}
else {
return failure(response);
}
}
}).catch(function (response) {
if (failure) {
return failure(response)
}
console.error('http' + methond + '错误', response);
});
}
}
3、使用
import request from '../public'
import httpUtil from '../httpUtils'
/*关联账号列表*/
export const apiGetLinkcount = (success, fail, data = '') => {
return httpUtil.httpRequest('get', '/memberLink/links', data, success, fail);
};