当前位置: 首页 > article >正文

axios如何取消请求、配置

        Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。在实际开发中,有时候需要取消已经发起的请求,同时也需要对请求进行各种配置。以下分别介绍 Axios 取消请求和配置请求的方法。

取消请求

  1. 使用 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:请求的方法,如 getpostputdelete 等,默认为 get
  • baseURL:请求的基础 URL,会与 url 拼接成完整的请求地址。
  • headers:请求头信息,是一个对象。
  • params:URL 参数,会被拼接在 URL 后面。
  • data:请求体数据,用于 postput 等方法。
  • timeout:请求超时时间,单位为毫秒。
  • responseType:响应数据的类型,如 jsontextblob 等,默认为 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);
    });


http://www.kler.cn/a/543670.html

相关文章:

  • ubuntu下一键编译
  • android launcher拖动图标释放错位
  • 小结:OSPF的网络类型,LSA
  • Django开发入门 – 4.创建Django app
  • c++初始
  • DEEPSEEK与GPT等AI技术在机床数据采集与数字化转型中的应用与影响
  • 归并排序(C# C++)
  • React 什么时候会触发重新渲染?
  • 【设计模式】01- 一文理解常用设计模式-“创建型模式”篇
  • vue error Expected indentation of 2 spaces but found 4 indent
  • 好好说话:深度学习扫盲
  • 搜维尔科技在动作捕捉与动画制作、汽车制造与安全测试、机器人与自动化领域的一些案例
  • chromium-mojo
  • python 获取smpl身高 fbx身高
  • 数据仓库与数据挖掘记录 一
  • iOS主要知识点梳理回顾-3-运行时消息机制
  • leetcode 面试经典 150 题:跳跃游戏 II
  • NeRF与3D Gaussian的异同对比
  • MySQL 实战 4 种将数据同步到ES方案
  • kotlin标准库里面也有很多java类
  • 解锁大语言模型潜能:KITE 提示词框架全解析
  • 一区IEEE Trans|特征模态分解FMD,一维数据分解新方法-matlab免费代码
  • C#/.NET/.NET Core技术前沿周刊 | 第 24 期(2025年1.27-1.31)
  • PyCharm控制台中文乱码
  • MongoDB 的基本概念
  • 跟着李沐老师学习深度学习(八)