Vue前端开发-axios对象实例创建和配置的过程

embedded/2024/12/28 5:20:53/

在Vue 3中,由于所有的组件都可能去请求数据,因此,针对axios模块的配置应该是全局性的,在进行axios模块的全局配置之前,需要了解axios实例的创建、配置对象和响应对象的结构内容,接下来我们分别来进行介绍。

创建axios实例

虽然在Vue3 项目中安装了axios模块后,就可以在任意的组件中导入它,并使用它请求数据,但考虑到代码的复用性和后期维护的方便,通常自己会创建一个axios实例,并配置这个实例,用于整个项目中的全部数据请求,创建axios实例的格式如下列代码所示。

// 根据配置对象创建一个axios实例
axios.create([config])

上述格式代码中,config是一个可选项的配置对象,如果在使用这个实例时,还有指定的配置对象,那么,指定的配置对象将会与实例的配置对象进行合并,并按照配置的优先级来执行,配置对象的优先级执行顺序如下图9-5所示:
在这里插入图片描述
**需要说明的是:**多个配置对象的属性是合并的,如果在合并过程中,存在相同的属性名称,则按配置对象的优先级来执行。

接下来演示创建一个新axios实例的过程,先在src目录下创建一个名为plugins的子目录,并在子目录下添加一个名为axios的js文件,并在该文件中加入如下代码:

import axios from "axios";const request = axios.create({baseURL: "http://rttop.cn/api",timeout: 2000
})

在上述代码中,先导入axios模块,再调用导入模块中的create方法,创建一个自定义的axios实例对象,在创建时,配置了baseURL属性和timeout属性,其中,配置对象中baseURL属性值将会自动添加到url属性前面,除非url属性是一个绝对路径,通过该属性的配置,为axios实例传递了一个全局统一的相对URL地址。

另外,timeout属性表示请求超时的时间,单位是毫秒,如果请求的时间超过了这个指定的毫秒数,那么请求就会被中断,该属性默认值为0,表示永不超时。

配置对象结构

无论是创建实例化对象,还是发送请求,配置对象都是必须要考虑的内容,在整个axios配置对象中,url属性是必须要填写的,method属性默认值为GET方式,对象中其余常用的属性名称如下列代码所示。

{
baseURL: "http://rttop.cn/api",timeout: 2000,url: "/",method: "POST",transformRequest: [(data, headers) => {console.log(data, headers)}],transformResponse: [(data) => {console.log(data)}],headers: {},params: {id: 123},data: {firstName: "tao"},responseType: "json",responseEncoding: "utf8",onUploadProgress: (progressevent => {console.log(progressevent)}),onDownloadProgress: (progressevent => {console.log(progressevent)})
}

针对上述配置对象中的常用属性,下面分别进行介绍:

  • url: 用于设置请求服务器的地址,如果设置了baseURL属性值,那么,该地址将会在baseURL属性值的后面,组合成一个新的请求地址。

  • method: 创建请求时使用的发送方式,默认值是GET方式。

  • transformRequest: 在向服务器发送数据之前,允许修改发送数据和请求头部信息,它只适用于POST、PUT和PATCH方式的请求,它的值是一个数据,且数组中函数的最后一个参数必须返回一个字符串,如Buffer实例,ArrayBuffer,FormData。

  • transformResponse: 在传递给then或catch之前,允许修改响应数据,可以对响应的返回数据做任意格式的调整,最后返回一个处理后数据。

  • headers: 可以自定义请求的头部信息,包括Authorization、Content-Type、User-Agent等发送请求时相关的信息。

  • params: 它是一个与请求地址一起发送的URL参数,因此,必须是一个简单的对象或一个URLSearchParams 对象。

  • data: 它是一个作为请求体被发送的数据,只适用于POST、DELETE 、PUT和PATCH方式的请求,在没有设置transformRequest属性时,浏览器请求时,它的类型是FormData、File和Blob中之一。

  • responseType: 用于设置响应数据的类型,可以是arraybuffer、 document、 json和text、stream类型中的一种,默认类型是json。

  • responseEncoding: 用于设置响应数据的编码格式,默认值为utf8编码格式。

  • onUploadProgress: 用于响应浏览器上传文件时的进度事件,如果上传文件时需要处理进度数据,可以设置该事件。

  • onDownloadProgress: 用于响应浏览器下载文件时的进度事件,如果下载文件时需要获取进度数据,可以添加该事件。
    在这里插入图片描述


http://www.ppmy.cn/embedded/145596.html

相关文章

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

自 2021 年发布以来,Nacos 2.0 在社区的支持下已走过近三年,期间取得了诸多成就。在高性能与易扩展性方面,Nacos 2.0 取得了显著进展,同时在易用性和安全性上也不断提升。想了解更多详细信息,欢迎阅读我们之前发布的回…

STM32 USB通信知识与应用详解

在嵌入式系统开发中,STM32作为一款性能卓越的微控制器,其USB通信功能的应用十分广泛。本文将深入探讨STM32 USB的相关知识,从基础概念到实际应用,为读者呈现一个全面的STM32 USB通信知识体系。 一、USB基础知识 USB(…

【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变

在数字化时代,信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求,新版MinerU整合包应运而生,它不仅简化了从PDF到Markdown的转换过程,还为用户带来了前所未有…

C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

前言 每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个…

STM32 LL库串口DMA收发初始化

DMA初始化 LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1); /* UART5_RX Init */LL_DMA_SetChannelSelection(DMA1, LL_DMA_STREAM_0, LL_DMA_CHANNEL_4);LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_STREAM_0, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);LL_DMA_SetStreamP…

uni-app项目无法在Android Studio模拟器上运行

目录 1 问题描述2 尝试解决3 引发原因4 解决方法4.1 换用 MuMu 模拟器 5 结语 1 问题描述 在使用 uni-app 开发 Pad 端 App 时,初始化项目后打算先运行一下确保初始化正常。打开 Android Studio 模拟器后,然后在 HbuilderX 中选择使用 App 标准基座 运…

PCIE概述

PCIE概述 文章目录 PCIE概述前言一、应用场景二、PCIE理论2.1 硬件2.2 拓扑结构:处理器和设备之间的关系2.3 速率2.4 层次接口2.5 四种请求类型2.5.1 bar空间2.5.2 memory2.5.3 IO2.5.4 configuration2.5.5 message 前言 参考链接: pcie总线知识点解析 …

408数据结构:树与二叉树选择题做题笔记

408数据结构 第一章 绪论 第二章 线性表 绪论、线性表选择题做题笔记 第三章 栈、队列和数组 栈、队列和数组选择题做题笔记 第四章 串 第五章 树与二叉树 树与二叉树选择题做题笔记 文章目录 408数据结构第一节 树的基本概念(1)知识点补充(…