返回
axios的封装-让你的axios请求更优雅
前端
2023-09-26 02:54:44
随着前端开发的深入,我们常常需要在项目中进行大量的数据请求,这不仅影响了开发的效率,也使代码变得杂乱无章,为了解决这一问题,我们就需要对axios进行封装,以实现代码的统一管理和高效运行。
第一步:引入axios
首先,我们需要在项目中引入axios库,可以使用npm或yarn安装:
npm install axios
第二步:创建axios实例并设置请求头
接下来,我们可以创建一个axios实例,并对请求头进行设置,以实现全局配置:
import axios from 'axios';
const instance = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
});
第三步:request拦截器
我们可以使用request拦截器来处理请求,在发出请求之前对请求数据进行处理,例如添加token或其他认证信息:
instance.interceptors.request.use((config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
第四步:设置response拦截器
同样,我们可以使用response拦截器来处理响应,在收到响应后对数据进行处理,例如提取数据或处理错误信息:
instance.interceptors.response.use((response) => {
return response.data;
}, (error) => {
// 处理错误
});
第五步:暴露出去 在组件中使用
最后,我们可以将封装好的axios实例暴露出去,以便在组件中使用:
export default instance;
在组件中,我们可以使用封装好的axios实例发送请求:
import axios from '../axios';
axios.get('/api/users').then((response) => {
console.log(response.data);
});
发送一个新的请求之前,取消前面的所有正在进行的请求
import axios from 'axios';
const instance = axios.create();
// 创建一个取消令牌
const source = axios.CancelToken.source();
// 发送请求,并传递取消令牌
instance.get('/api/users', {
cancelToken: source.token,
}).then((response) => {
console.log(response.data);
}).catch((error) => {
if (axios.isCancel(error)) {
console.log('Request canceled');
} else {
console.log(error.message);
}
});
// 取消请求
source.cancel('Request canceled');
通过以上步骤,我们就可以轻松地将axios进行封装,从而在项目中进行数据请求时,更加便捷和高效。