首页 > 其他分享 >axios的理解和使用

axios的理解和使用

时间:2024-04-06 11:32:05浏览次数:35  
标签:拦截器 请求 取消 理解 ajax axios 使用 config

axios中文文档 https://www.axios-http.cn/docs/intro

是什么

前端最流行的ajax请求库
react/vue官方都推荐使用axios发ajax请求

 

特点

基本promise的异步ajax请求库
浏览器端/node端都可以使用
支持请求/响应拦截器
支持请求取消
请求/响应数据转换
批量发送多个请求

常用语法

[ ]里的为可选选项

axios(config): 通用/最本质的发任意类型请求的方式
axios(url[, config]): 可以只指定url发get请求
axios.request(config): 等同于axios(config)
axios.get(url[, config]): 发get请求
axios.delete(url[, config]): 发delete请求
axios.post(url[, data, config]): 发post请求
axios.put(url[, data, config]): 发put请求

axios.defaults.xxx: 请求的默认全局配置
axios.interceptors.request.use(): 添加请求拦截器
axios.interceptors.response.use(): 添加响应拦截器

axios.create([config]): 创建一个新的axios(它没有下面的功能)

axios.Cancel(): 用于创建取消请求的错误对象
axios.CancelToken(): 用于创建取消请求的token对象
axios.isCancel(): 是否是一个取消请求的错误
axios.all(promises): 用于批量执行多个异步请求
axios.spread(): 用来指定接收所有成功数据的回调函数的方法

难点语法理解与使用  

 

1). axios.create(config) 
    a. 根据指定配置创建一个新的axios, 也就就每个新axios都有自己的配置
    b. 新axios只是没有取消请求和批量发请求的方法, 其它所有语法都是一致的
    c. 为什么要设计这个语法?
        需求: 项目中有部分接口需要的配置与另一部分接口需要的配置不太一样, 如何处理
        解决: 创建2个新axios, 每个都有自己特有的配置, 分别应用到不同要求的接口请求中

2). 拦截器函数/ajax请求/请求的回调函数的调用顺序
    a. 说明: 调用axios()并不是立即发送ajax请求, 而是需要经历一个较长的流程
    b. 流程: 请求拦截器2 => 请求拦截器1 => 发ajax请求 => 响应拦截器1 => 响应拦截器2 => 请求的回调
    c. 注意: 此流程是通过promise串连起来的, 请求拦截器传递的是config, 响应拦截器传递的是response

3). 取消请求
    a. 基本流程: 
        配置cancelToken对象
        缓存用于取消请求的cancel函数
        在后面特定时机调用cancel函数取消请求
        在错误回调中判断如果error是cancel, 做相应处理

    b. 实现功能
        点击按钮, 取消某个正在请求中的请求
        在请求一个接口前, 取消前面一个未完成的请求

取消请求的方式 (详情见中文文档)

const controller = new AbortController();

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token,
  signal: controller.signal
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // 处理错误
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// 取消请求 (message 参数是可选的)
source.cancel('Operation canceled by the user.');
// 或
controller.abort(); // 不支持 message 参数

标签:拦截器,请求,取消,理解,ajax,axios,使用,config
From: https://blog.csdn.net/qq_74217055/article/details/137422836

相关文章

  • 最新ChatGPT4.0工具使用教程:GPTs,Midjourney绘画,AI换脸,GPT语音对话,文档分析一站式系统
    一、前言ChatGPT3.5、GPT4.0、相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。然而,GPT-4对普通用户来说都是需要额外付费才可以使用。所以今天小编就整理一个真正可免费的AI工具,可......
  • 使用POOL+Queue的多进程爬虫
    前面说的multiprocessing里面的Process动态生成多个进程,如果限制数量过大就繁琐了,现在就可以使用Pool进程的功效。在使用Pool前,我们先了解一下阻塞和非阻塞两个概念。阻塞和非阻塞关注的是程序在等待调用结果时的状态。阻塞要等到回调结果出来,在有结果之前,当前进程会被挂起。......
  • [转帖]如何在Ubuntu Linux上使用SNAP安装Docker
    https://zhuanlan.zhihu.com/p/633483748 2人赞同了该文章在UbuntuLinux上安装Docker的最快捷的方法之一是使用SNAP命令。在这里,我们将学习如何使用它。对于那些处理容器化应用程序的人来说,Docker无需介绍。它已经被全球数百家企业和开发人员使用。然而,那些想要......
  • 中文GPTS,字节中文扣子Coze使用全教程
    字节出自己的GPTS了,名字英文名叫coze,中文名叫“扣子”。和OpenAI的GPTS类似。具有可定制性和完成特定任务的强大功能,它提供了一种新的GPT方式,可以让用户根据自己的需求定制化,并与其他用户共享。 国内用的是云雀大模型。国外目前可以白嫖GPT4。 我体验了一下,并在抖音上测试发......
  • 中文GPTS详尽教程,字节扣子Coze插件使用全输出
    今天,斜杠君和大家分享如何在字节扣子Coze中创建插件,并在创建后如何使用这个插件。 一、新建插件首先,进入到插件页面,创建一个插件。https://www.coze.cn/home 点击左侧的个人空间。 在上面选择”插件“标签,来到插件的页面。点击”创建插件“按钮,开始创建。  在弹......
  • 中文GPTS使用秘籍,字节扣子Coze工作流使用全教程
    大家好,我是斜杠君。今天和大家分享字节扣子Coze工作流创建和使用全教程,手把手教会你。 首先我们先来看一下如何创建一个工作流。 我们以创建这样一个工作流为例。这个工作流程的作用是:把用户输入的内容通过头条接口查询信息,把查到的信息标题翻译成英文返回给客户,并在聊天界......
  • 中文GPTS使用秘籍,字节扣子Coze工作流使用全教程
    大家好,我是斜杠君。今天和大家分享字节扣子Coze工作流创建和使用全教程,手把手教会你。 首先我们先来看一下如何创建一个工作流。 我们以创建这样一个工作流为例。这个工作流程的作用是:把用户输入的内容通过头条接口查询信息,把查到的信息标题翻译成英文返回给客户,并在聊天界......
  • VSCODE EIDE使用debug记录
    用上vscode之后就感觉之前的keil不太爽了,找什么东西搜索都很麻烦,之前有写过eide的文章,想着能不能在eide里面就把debug也做了,发现真的可以,下面记录一下,主要是参考这个大佬的文章,非常感谢。VscodeEIDE+CortexDebug搭建STM32开发仿真环境本身是依赖这个软件,需要安装一下......
  • 超强AI辅助工具:BitoCLI的简单使用
    今天要推荐一个爱不释手的好东西–Bito;从事相关工作的人大概率在自己的代码编辑器中已经用上了Bito的插件版本,所以这里主要介绍的是一个适合与所有人且方便快捷的BitoCLI,也就是Bito的命令行版本。BitoCLI从官方介绍来看,这是一款为BitoAI聊天功能提供命令行界面。CL......
  • 使用PowerMock来mock静态方法
    使用引入依赖<dependency><groupId>org.powermock</groupId><artifactId>powermock-api-mockito2</artifactId><version>2.0.9</version></dependency><dependency><groupId>org.powermock<......