- 先写axios的默认配置(axios.js文档中 找配置默认值,把全局的 axios 默认值 复制下来、创建实例 axios.create([config])复制下来)
- 开始封装
- 代码如下:
/* 做数据请求的封装 */
/*
1. 先写axios的默认配置(axios.js文档中 找配置默认值,把全局的 axios 默认值 复制下来、创建实例 axios.create([config])复制下来)
2. 开始封装
*/
import axios from 'axios'
//第1步写axios的默认配置
// axios.defaults.baseURL = 'https://api.example.com'; //这是跟后端地址的
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.create({
// baseURL: 'https://some-domain.com/api/',
timeout: 1000,
// headers: {'X-Custom-Header': 'foobar'}
});
//上面都是默认配置
// 第2步开始封装
const request = ({
// axios选项(axios选项去axios.js 官网上找 文档 请求配置 (找需要的))
url,
method = 'GET',
headers,
params,
data,
withCredentials = false
}) => {
return new Promise((resolve,reject) => {
//1. 这是数据处理
switch (method){
case 'POST':
axios({
url,
method,
headers,
data,
params,
withCredentials = false
})
break;
default:
//get put delete
axios({
url,
method,
headers,
params,
withCredentials = false
}).then( res => resolve(res))
.then( err => console.log(err))
break;
}
//2. 拦截器(去axios.js官网上去找拦截器)
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
})
}
//导出
export default request