Axios 是一个常用的 HTTP 请求库,它在 React 中的使用也非常频繁。在使用 Axios 进行网络请求时,我们需要遵循一些最佳实践。
为了方便项目管理和维护,我们可以将 Axios 封装成一个单独的文件。在这个文件中,我们可以根据需要配置 Axios 的默认设置,如设置请求的超时时间、默认的请求头、默认的请求方法等。
在封装文件中,也可以定义一些通用的请求方法,使其可以在整个项目中重复使用。
例如:
import axios from 'axios';
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 5000;
axios.defaults.headers.common['Authorization'] = 'Bearer ' + localStorage.getItem('token');
const api = {
getUser: () => axios.get('/user'),
updateUser: (data) => axios.put('/user', data),
deleteUser: (id) => axios.delete(`/user/${id}`),
// 其他请求方法
};
export default api;
Axios 提供了拦截器(interceptors)的机制,可以在请求和响应被处理前或处理后对其进行修改、转换或错误处理等操作。在 React 中,我们可以使用拦截器来处理一些通用的业务逻辑,例如添加 loading 状态、处理接口错误等。
在拦截器中,我们需要注意错误处理的机制,尽可能地向下传递错误信息。
例如:
import axios from 'axios';
import { message } from 'antd';
axios.interceptors.request.use((config) => {
// 添加 loading 状态
message.loading('Loading...', 0);
return config;
}, (error) => {
// 错误处理
message.error('Request error');
return Promise.reject(error);
});
axios.interceptors.response