简述为什么二次封装axios,请给出封装axios步骤及代码
时间: 2024-06-14 21:01:58 浏览: 160
封装 Axios 的主要目的是为了简化在项目中多次使用 HTTP 请求的过程,提高代码的可复用性和组织结构。这样可以避免重复编写相同的请求逻辑,同时还可以统一处理错误和配置,使代码更易于维护。以下是简述为什么以及封装 Axios 的一般步骤和代码示例:
**原因**:
1. **代码复用**:避免在各个模块中都写重复的 Axios 调用代码。
2. **配置管理**:统一设置全局的请求头、超时、默认参数等。
3. **错误处理**:集中处理网络错误和响应解析,提高错误响应的统一性。
4. **API 集成**:方便引入新的 HTTP 库或替换 axios。
**封装步骤**:
1. 引入 Axios 和 Promise。
2. 创建一个 Axios 实例,通常包含配置选项。
3. 定义公共方法(如请求、获取、POST 等)作为接口,内部调用 Axios。
4. 添加错误处理逻辑,如统一转换响应。
5. 提供工厂方法返回封装后的实例。
**代码示例**(使用 ES6 模块化):
```javascript
// axiosConfig.js
import axios from 'axios';
const instance = axios.create({
baseURL: process.env.REACT_APP_API_URL, // API 基础地址
timeout: 5000, // 设置超时时间
headers: {
'Content-Type': 'application/json',
},
});
export default instance;
// api.js 或者你的封装文件
import axiosInstance from './axiosConfig';
export const get = async (url, params = {}) => {
try {
const response = await axiosInstance.get(url, { params });
return response.data;
} catch (error) {
// 处理错误
console.error('GET error:', error);
throw error;
}
};
export const post = async (url, data) => {
try {
const response = await axiosInstance.post(url, data);
return response.data;
} catch (error) {
console.error('POST error:', error);
throw error;
}
};
```
阅读全文