您现在的位置是:首页 >技术杂谈 >axios如何取消请求、配置网站首页技术杂谈
axios如何取消请求、配置
简介axios如何取消请求、配置
Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。在实际开发中,有时候需要取消已经发起的请求,同时也需要对请求进行各种配置。以下分别介绍 Axios 取消请求和配置请求的方法。
取消请求
- 使用
CancelToken(旧方法)
在 Axios 旧版本中,使用 CancelToken 来取消请求。CancelToken 是 Axios 提供的一个用于取消请求的工具。
// 创建一个 CancelToken 源
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
// 发起请求,并传入 CancelToken
axios.get('https://api.example.com/data', {
cancelToken: source.token
})
.then(response => {
console.log(response.data);
})
.catch(error => {
if (axios.isCancel(error)) {
console.log('请求已取消:', error.message);
} else {
console.log('请求出错:', error.message);
}
});
// 取消请求
source.cancel('用户取消了请求');
2. 使用 AbortController(新方法)
从 Axios v0.22.0 开始,支持使用 AbortController 来取消请求,这是一种更现代的方法,与浏览器的 fetch API 取消请求的方式一致。
// 创建一个 AbortController 实例
const controller = new AbortController();
const signal = controller.signal;
// 发起请求,并传入 signal
axios.get('https://api.example.com/data', {
signal: signal
})
.then(response => {
console.log(response.data);
})
.catch(error => {
if (error.name === 'AbortError') {
console.log('请求已取消');
} else {
console.log('请求出错:', error.message);
}
});
// 取消请求
controller.abort();
请求配置
1. 全局配置
可以在创建 Axios 实例时进行全局配置,这样所有通过该实例发起的请求都会使用这些配置。
import axios from 'axios';
// 创建一个 Axios 实例,并进行全局配置
const instance = axios.create({
baseURL: 'https://api.example.com', // 请求的基础 URL
timeout: 5000, // 请求超时时间,单位为毫秒
headers: {
'Content-Type': 'application/json'
}
});
// 使用实例发起请求
instance.get('/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log('请求出错:', error.message);
});
2. 单个请求配置
在发起单个请求时,也可以传入特定的配置,这些配置会覆盖全局配置。
import axios from 'axios';
// 发起单个请求,并传入特定配置
axios.get('https://api.example.com/data', {
timeout: 3000, // 该请求的超时时间为 3 秒
headers: {
'Authorization': 'Bearer your_token'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log('请求出错:', error.message);
});
3. 常用配置选项
url:请求的 URL 地址。method:请求的方法,如get、post、put、delete等,默认为get。baseURL:请求的基础 URL,会与url拼接成完整的请求地址。headers:请求头信息,是一个对象。params:URL 参数,会被拼接在 URL 后面。data:请求体数据,用于post、put等方法。timeout:请求超时时间,单位为毫秒。responseType:响应数据的类型,如json、text、blob等,默认为json。-
axios({ url: '/user', method: 'post', baseURL: 'https://api.example.com', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, params: { id: 123 }, data: { name: 'John Doe', age: 30 }, timeout: 5000, responseType: 'json' }) .then(response => { console.log(response.data); }) .catch(error => { console.log('请求出错:', error.message); });
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结