Axios 介绍及使用指南

本文将基于 Axios 原理,安装及封装方面展开描述,话不多说,现在发车!

一、原理

Axios 中文文档:起步 | Axios中文文档 | Axios中文网

赛前科普:

下文将涉及到三个关键词:Axios,Ajax,XMLHttpRequest


XMLHttpRequest(XHR) 

  • 浏览器内置的一个 API,用于在客户端与服务器交换数据
  • 可以实现异步请求
  • 支持多种数据格式(如 JSON、文本等)

Ajax

  • 通过异步请求,在不重新加载整个页面的情况下,动态更新页面的部分内容
  • 支持多种数据格式(如 JSON、文本等)
  • AJAX 通过 XMLHttpRequest 技术来实现

Axios 是一个基于 Promise 的 网络请求库,用于在浏览器和 Node.js 环境中发送 HTTP 请求

  • 浏览器端中,较为传统的两种网络请求的 API 是 fetch 和 XMLHttpRequest,而 Axios 使用的是 XMLHttpRequest
  • Node.js 环境中,Axios使用 Node.js 原生的 http 或 https 模块

Axios 使用 Promise 来处理异步请求,使得它可以通过 .then().catch() 来处理请求成功或失败的回调,而不需要使用传统的回调函数。

二、安装

执行如下命令:

npm install axios

  或者 

yarn add axios

安装完成后即可进行封装

三、封装

首先创建一个 request 目录,创建 request.js 文件用于封装方法,创建一个使用 axios 实例的 admin.js 文件。

request.js 文件

在这个文件中创建 axios 实例,设置 baseURL,timeout 等。

接下来就请求拦截器和相应拦截器,根据实际业务需求:

是否需要在请求拦截器中携带登录令牌,在响应拦截器中根据返回的状态码进行错误处理或者数据接收。

(状态码的处理可以单独封装一个方法,不必将判断大篇幅写在响应拦截器中,下面有代码示例)

import axios from 'axios'// create an axios instance
const service = axios.create({// baseURL: process.env.VUE_APP_BASE_API,// withCredentials: true,timeout: 5000 // request timeout
})// Add a request interceptor
service.interceptors.request.use(config => {return config},error => {return Promise.reject(error)}
)// Add a response interceptor
service.interceptors.response.use(response => {const res = response.dataif (res.code !== 200) {console.error(res.message || 'Error')handleError(res.code) // TODO: Handle errorreturn Promise.reject(new Error(res.message || 'Error'))} else {return res}},error => {return Promise.reject(error)}
)export default service
handleError(code) => {// 利用 if,switch等对code进行条件判断进行对应处理switch (code) {case '500401':console.log('这是500401');break;case '500402':console.log('这是500402');break;case '500403':console.log('这是500403');break;default:console.log('default');}
}

 

import axios from 'axios'const service = axios.create(config)
service.interceptors.request.use(requestHandler, requestErrorHandler)
service.interceptors.response.use(responseHandler, responseErrorHandler)export default service

封装结构就是这样的,创建实例——请求、响应拦截器——暴露方法

三、使用

admin.js 文件

在这个文件中使用封装后的方法:

import request from '@/utils/request'export function fetchList(query) {return request({url: 'your/request/url',method: 'get',params: query})
}export function finishForm(formData) {return request({url: 'your/request/url11',method: 'post',data: formData})
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#插件与可扩展性

外接程序为主机应用程序提供了扩展功能或服务。.net framework提供了一个编程模型,开发人员可以使用该模型来开发加载项并在其主机应用程序中激活它们。该模型通过在主机和外接程序之间构建通信管道来实现此目的。该模型是使用: System.AddIn, System.AddIn.Hosting, System.…

Melos 发布pub.dev

确保登录 置登录状态 按照提示操作,先运行: bash dart pub logout 这会清除当前的(损坏的)登录信息。 然后再重新登录: bash dart pub login 这一次它应该会在浏览器中打开 Google 登录页面,完成登…

4.黑马学习笔记-SpringMVC(P43-P47)

1.SpringMVC简介 SpringMVC技术(更少的代码,简便)与servlet技术功能相同,属于web层开发技术。 SpringMVC是一种基于java实现MVC模型的轻量级web框架。 轻量级指的是(内存占用比较低,运行效率高)…

【特殊场景应对1】视觉设计:信息密度与美学的博弈——让简历在HR视网膜上蹦迪的科学指南

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…

CentOS 7 linux系统从无到有部署项目

环境部署操作手册 一、Maven安装与配置 1. 下载与解压 下载地址:https://maven.apache.org/download.cgi?spm5238cd80.38b417da.0.0.d54c32cbnOpQh2&filedownload.cgi上传并解压解压命令: tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/loc…

Odoo:免费开源的轧制品行业管理软件

Odoo免费开源的轧制品行业管理软件能够帮助建材、电线电缆、金属、造纸包装以及纺织品行业提高韧性和盈利能力,构筑美好未来。 文 | 开源智造(OSCG)Odoo金牌服务 提高供应链韧性,赋能可持续发展 如今,金属…

51单片机实验二:数码管静态显示

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境:Keli,STC-ISP烧写软件,Proteus. 器材:TX-1C单片机(STC89C52RC…

学术AI工具推荐

一、基础信息对比 维度知网研学AI(研学智得AI)秘塔AIWOS AI开发公司同方知网(CNKI)上海秘塔网络科技Clarivate Analytics是否接入DeepSeek✅ 深度集成(全功能接入DeepSeek-R1推理服务)✅ 通过API接入DeepS…

冰川流域提取分析——ArcGIS pro

一、河网提取和流域提取视频详细GIS小熊 || 6分钟学会水文分析—河网提取(以宜宾市为例)_哔哩哔哩_bilibili 首先你要生成研究区域DEM,然后依次是填洼→流向→流量→栅格计算器→河网分级→栅格河网矢量化(得到河网.shp&#xff…

【物联网-RS-485】

物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点 ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式:半双工通信、(逻辑1:2V ~ 6V 逻辑0:-6V ~ -2V)这里的电平…

解析检验平板:设备还是非设备?深入了解其功能与应用(北重铸铁平台厂家)

检验平板通常被归类为设备,因为它们具有特定的功能,并且被用于测试和评估其他设备或产品的性能和质量。检验平板通常具有平坦的表面,用于放置要进行测试或检验的物品。它们可以用于测量尺寸、形状、平整度、表面光洁度等参数。 检验平板的应…

6.数据手册解读—运算放大器(二)

目录 6、细节描述 6.1预览 6.2功能框图 6.3 特征描述 6.3.1输入保护 6.3.1 EMI抑制 6.3.3 温度保护 6.3.4 容性负载和稳定性 6.3.5 共模电压范围 6.3.6反相保护 6.3.7 电气过载 6.3.8 过载恢复 6.3.9 典型规格与分布 6.3.9 散热焊盘的封装 6.3.11 Shutdown 6.4…

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题

青少年软件编程(Python)等级考试试卷(六级) 分数:100 题数:38 答案解析:https://blog.csdn.net/qq_33897084/article/details/147341458 一、单选题(共25题,共50分) 1. 在tkinter的…

centos与ubuntu系统版本介绍

CentOS与Ubuntu系统镜像版本介绍 前言CentOS官网镜像历史版本阿里云镜像总结 Ubuntu官网系统总结 最后 前言 在我准备给虚拟机(我使用的是vritualbox)安装一个Linux系统,不知道该选择centos还是Ubuntu。并且在下载镜像的过程中对系统的版本、…

Go 语言中的 package main、 func main() 和main.go的使用规范

本文旨在解释 Go 语言中 package main 、 func main() 和main.go的关系及其使用规则,解决如下典型问题: 是否可以在一个项目中定义多个 func main()?是否可以在非 package main 中写 func main()?多个文件中都写 func main() 会冲突吗?main.go是必须的命名方式吗?正确的结…

MySQL启动Failed to start LSB: start and stop MySQL

错误呈现 数据库初始化 删除 mysql/data中的文件 在对数据库重新进行初始化之前,需要事先删除 /usr/local/mysql/data目录下已经生成的文件。 查看 ll /usr/local/mysql/data/#删除 rm -rf /usr/local/mysql/data/* 删除 使用以下命令对数据库初始化 /usr/local/m…

服务器架构:SMP、NUMA、MPP及Docker优化指南

文章目录 引言 一、服务器架构基础1. SMP(对称多处理,Symmetric Multiprocessing)2. NUMA(非统一内存访问,Non-Uniform Memory Access)3. MPP(大规模并行处理,Massively Parallel Pr…

【HarmonyOS NEXT】多目标产物构建实践

目录 什么是多产物构建 如何定义多个构建产物 如何在项目中使用 参考文章 什么是多产物构建 在鸿蒙应用开发中,一个应用可定义多个 product,每一个 product 对应一个定制的 APP 包,每个 product 中支持对 bundleName、bundleType、输出产…

Django视图(未分离)

ListView、DetailView、CreateView、UpdateView 和 DeleteView 是 Django 框架中基于类的通用视图(Class-Based Generic Views) 配置 URL 路由 在 urls.py 中为这些视图配置路由: from django.urls import path from .views import (PostLis…

如何通过自动化解决方案提升企业运营效率?

引言 在现代企业中,运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展,传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司,还…