回答面试题 你是怎么封装的axios请求
时间: 2024-08-12 15:09:56 浏览: 62
在封装 Axios 请求时,通常会创建一个模块化的工具库,以便于在项目中的各个组件或服务中复用。以下是一个简单的封装示例:
```javascript
// 创建一个名为 `httpService.js` 的文件
const axios = require('axios'); // 引入 Axios 库
// 定义一个工厂函数,用于创建 Axios 实例,并添加默认配置
const createAxios = () => {
const instance = axios.create({
baseURL: 'https://api.example.com', // API 基础地址
timeout: 5000, // 设置超时时间
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer your_token' // 如果需要,添加认证信息
}
});
// 添加全局错误处理
instance.interceptors.response.use(
response => response,
error => {
console.error('Error:', error);
throw error;
}
);
return instance;
};
// 导出默认的 Axios 实例和一个发送通用请求的方法
module.exports = {
// 获取默认的 Axios 实例
default: createAxios(),
// 发送 GET 请求
get: (url, config = {}) => createAxios().get(url, { ...config }),
// 发送 POST 请求
post: (url, data = {}, config = {}) => createAxios().post(url, data, { ...config }),
// 发送其他类型的请求(如 PUT、DELETE等)
put: (url, data, config = {}) => createAxios().put(url, data, { ...config }),
delete: (url, data, config = {}) => createAxios().delete(url, data, { ...config }),
// 封装自定义请求方法,比如分页获取数据
paginatedGet: (url, params, currentPage) => {
const urlWithPage = `${url}?page=${currentPage}`;
return this.get(urlWithPage, { params });
},
// 如果有其他需要封装的方法,也可以添加
// ...
};
```
阅读全文