- 请求方式:对应 HTTP 请求中的 GET、POST 等方法;
- 请求路径:对应请求的 API 地址;
- 请求参数:请求携带的参数,包括 query 参数和 body 参数;
- 请求头:一些请求需要携带特殊的请求头,如 token 等;
- 请求拦截器:在发起请求前对一些参数或请求方式进行处理;
- 响应拦截器:对服务器返回的数据进行处理;
- 异常处理:对请求过程中可能发生的异常进行处理,如网络不可用、超时等等;
- 取消请求:在需要取消请求时提供相应方法。
基于以上方面,我们可以封装一个通用的请求函数。示例代码如下:
import axios from 'axios';
const request = axios.create({
baseURL: 'https://api.example.com', // 使用自己项目的 API 地址
timeout: 5000, // 超时时间
});
request.interceptors.request.use(
config => {
// 发出请求前的处理
return config;
},
error => {
// 请求出错时的处理
return Promise.reject(error);
}
);
request.interceptors.response.use(
response => {
// 请求响应后的处理
const { data, status } = response;
if (status === 200) {
return data;
} else {
return Promise.reject(response);
}
}, error => {
// 请求失败时的处理
return Promise.reject(error);
}
);
export default function req({ method = 'get', url, params = {}, headers = {}, cancelToken = undefined }) { return new Promise((resolve, reject) => { request({ method, url, params, headers, cancelToken, }) .then(response => { resolve(response); }) .catch(error => { reject(error); }); }); }