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

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})
}

相关文章:

  • 字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架
  • 高并发三剑客-本地缓存之王Caffeine-01缓存应用
  • 《忘尘谷》音阶与调性解析
  • 非参数 Spearman 相关在多组学分析中的力量及AI拓展
  • langchain框架-文档加载器详解
  • Arm系统ubuntu20.04中自带的火狐浏览器打开网页B站视频和百度网盘网页视频,视频无法打开,并且没有声音——(本质上解决)
  • DeepSeek-V3技术架构深度解析与性能优化实践
  • 力扣每日打卡 1534. 统计好三元组 (简单)
  • 从代码学习深度学习 - 自注意力和位置编码 PyTorch 版
  • 记录 | Pycharm中如何调用Anaconda的虚拟环境
  • 基于MCP协议的多模态思维链在医疗系统改造中的融合研究
  • 【Code】《代码整洁之道》笔记-Chapter16-重构SerialDate
  • 驱动开发硬核特训 · USB 摄像头专题:原理 + 实战深度解析(基于 linux-imx)
  • Python爬虫第14节-如何爬取Ajax的数据
  • 代码随想录笔记-哈希表
  • 万字长篇————C语言指针学习汇总
  • 数据库表设计五层分类系统表设计
  • 测试定时发布
  • How AI could empower any business - Andrew Ng
  • VueDOMPurifyHTML 防止 ​​XSS(跨站脚本攻击)​​ 风险
  • 港理大公布多项AI+医工成果,助港建设国际医疗创新枢纽
  • 坚守刑事检察一线13年,“在我心中每次庭审都是一次大考”
  • 主播说联播丨六部门出台新政!来华买买买,实惠多多多
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布超30亿元收购黄金资产
  • 韩国京畿道骊州市市长率团访问菏泽:想和菏泽一起办牡丹节
  • 哈工大赵杰:人形机器人要拓展人的能力而非一味复制,未来产业要做成至少10年