将axios封装成API的形式,而不是定义在Vue的原型上面,因为这样会造成原型的污染
1.在src/api文件夹下创建一个request.js文件
2.创建axios配置变量,根据node的环境变量来匹配baseURL
const axiosConfig = {
baseURL: process.env.NODE_ENV === 'production' ? '' : '/api',
responseType: 'json',
responseEncoding: 'utf8',
headers: {},
};
3.创建axios实例
const service = axios.create(axiosConfig)
4.配置拦截器,判断token、status等,这里返回resolve或者reject,后面可以通过then、catch捕获到
service.interceptors.request.use(config => {
if (localStorage.getItem('token')) {
config.headers.ACCESS_TOKEN = localStorage.getItem('token');
}
return config
}, error => {
// 对请求错误做些处理
console.log(error)
return Promise.reject()
})
5.最后暴露出service实例
export default service
6.需要用到axios时,直接引入使用
import request from '@/api/request';
const getUserIds = params => {
/*返回的是一个Promise对象*/
return request({
url: `${prefix}/user_attribute`,
method: 'POST',
data: params,
})
}