1、代码实现:
import axios from 'axios'
import {Message} from 'element-ui'
// 创建实例时设置配置的默认值
var instance = axios.create({
baseURL: 'http://123.57.7.108:1024/emall',
timeout:'1000'
});
//定义拦截器
//给创建的实例添加请求拦截器
instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
config.headers['Authorization']="Bearer "+window.localStorage.getItem("token");
if(config.methods=='post'){
config.headers[' contentType']='application/json;charset=utf-8'
}
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 给创建的实例添加响应拦截器
instance.interceptors.response.use(function (response) {
// 对响应数据做点什么
const data=response.data;//从数据接口中返回的json对象
switch(data.code){
case 200:
case 201:
case 204:
//收到以上端口号信息进入.then
return data;//返回的是data,而不是respons
default:
//其它情况,弹框就可以了,进入.catch
message({
message: data.message,
type: 'warning'
});
return Promise.reject(data.message);
}
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
//导出实例,供其他模块导入使用
export default instance;
2、主要目的:
封装数据,提高代码的可重用性,避免或者减少项目迁移带来列如地址更改这样的工作量。