一篇学通Axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js 环境。它提供了一种简单易用的方式来发送 HTTP 请求,并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换 JSON 数据等功能。
在这里插入图片描述

Axios 名字的由来

Axios 的名字来源于希腊神话中的英雄 Axios。这位英雄是一个勇敢的冒险家,拥有强大的力量和知识,能够改变任何事物,使它们变得更加强大。Axios 库的设计初衷和命名灵感正是源自于这位英雄,旨在提供一种强大且灵活的 HTTP 客户端,帮助开发者在前端和 Node.js 环境中轻松发送 HTTP 请求,并处理各种复杂的网络交互场景。

Axios 详细介绍

  1. 基本概念

    • Axios(全称 ajax I/O system)不是一种新技术,本质上是对原生 XHR(XMLHttpRequest)的封装,但它是基于 Promise 的实现版本,符合最新的 ES 规范。
    • Axios 提供了简单而直观的 API,使得在前端应用程序中进行 HTTP 通信变得更加容易。
    • Axios 可以与现代前端框架(如 React、Vue.js 和 Angular)以及后端服务器(如 Node.js)配合使用。
  2. 主要特性

    • 从浏览器中创建 XMLHttpRequests。
    • 从 node.js 创建 http 请求。
    • 支持 Promise API。
    • 拦截请求和响应。
    • 转换请求数据和响应数据。
    • 取消请求。
    • 自动转换 JSON 数据。
    • 客户端支持防御 XSRF。

Axios 安装

Axios 可以通过多种方式进行安装,包括使用 npm、yarn 或 CDN。

  • 使用 npm
    npm install axios
  • 使用 yarn
   yarn add axios
  • 使用 CDN
   <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

Axios 示例

1. 发送 GET 请求

  • 基本用法
    
axios.get('/user?ID=12345')  .then(function (response) {  console.log(response);  })  .catch(function (error) {  console.log(error);  });  // 或者使用 axios(config) 形式  
axios({  method: 'get',  url: '/user',  params: {  ID: 12345  }  
})  
.then(function (response) {  console.log(response);  
})  
.catch(function (error) {  console.log(error);  
});
  • 使用 axios 实例
const instance = axios.create({  baseURL: 'https://some-domain.com/api/',  timeout: 1000,  headers: {'X-Custom-Header': 'foobar'}  
});  // 发送请求  
instance.get('/user?ID=12345')  .then(function (response) {  console.log(response);  })  .catch(function (error) {  console.log(error);  });

2. 发送 POST 请求

  • application/json 类型
axios.post('/user', {  firstName: 'Fred',  lastName: 'Flintstone'  })  .then(function (response) {  console.log(response);  })  .catch(function (error) {  console.log(error);  });
  • form-data 类型
const formData = new FormData();  
formData.append('file', fileInput.files[0]);  
formData.append('user', '12345');  axios.post('/upload', formData, {  headers: {  'Content-Type': 'multipart/form-data'  }  })  .then(function (response) {  console.log(response);  })  .catch(function (error) {  console.log(error);  });

3 请求拦截器和响应拦截器

  • 请求拦截器
axios.interceptors.request.use(function (config) {  // 在发送请求之前做些什么  return config;  }, function (error) {  // 对请求错误做些什么  return Promise.reject(error);  });
  • 响应拦截器
axios.interceptors.response.use(function (response) {  // 对响应数据做点什么  return response;  }, function (error) {  // 对请求错误做些什么  return Promise.reject(error);  });

  • Axios 官方站点: https://axios-http.com/zh/
  • Axios 源码地址:https://github.com/axios/axios


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

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

相关文章

Linux操作系统入门(适用java软件开发)

1.什么是操作系统? 操作系统&#xff08;Operating System&#xff0c;简称 OS&#xff09;是一种系统软件&#xff0c;它管理和控制计算机硬件与软件资源&#xff0c;为用户和应用程序提供一个接口和环境来访问计算机系统的服务和功能。操作系统的主要目标是提供一个方便、有…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析&#xff1a;使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代&#xff0c;数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究&#xff0c;数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

微积分-导数8(线性近似和微分)

线性近似 我们已经看到&#xff0c;在切点附近&#xff0c;曲线与其切线非常接近。事实上&#xff0c;通过放大可微函数图上的某一点&#xff0c;我们注意到图形看起来越来越像它的切线&#xff08;见图&#xff09;。这一观察是找到函数近似值的方法的基础。 这个想法是&am…

monodepth代码与原理对照实现

先实现demomonodepth/monodepth_simple.py at master mrharicot/monodepth GitHub import os os.environ[TF_CPP_MIN_LOG_LEVEL]0 这行代码是为tensorflow设置环境变量TF_CPP_MIN_LOG_LEVEL,用来控制tensorflow c后端输出的日志级别。0就是输出所有级别的日志信息。包括(调…

vue2学习笔记3 - 开发环境知识补充:live server简介

学习笔记1搭建开发环境中&#xff0c;在vs code里安装了live server插件&#xff0c;后续多次使用open with live server来打开浏览器&#xff0c;展示代码运行效果。本着知其然也要知其所以然的态度&#xff0c;稍稍了解了一下Live server。 什么是Live Server Live Server是…

滞后序列分析案例详解

一个半小时 超出30分钟 日期&#xff1a;2024-07-13 19:14:33 回放 摘要 Python在行为分析中的应用 主要讲述了如何使用Python处理序列数据&#xff0c;以及如何结合定性分析和定量分析来全面分析课程内容。讲者提到了一种叫做分层法的分类方法&#xff0c;该方法使用了布鲁…

ctfshow-web入门-php特性(web96-web99)

目录 1、web96 2、web97 3、web98 4、web99 1、web96 试了下通配、转义、拼接、大小写都不行 这里使用绝对路径或者当前路径绕过&#xff1a; ?u./flag.php ?u/var/www/html/flag.php 还可以使用 php 伪协议&#xff1a; ?uphp://filter/resourceflag.php 2、web97 关…

数据结构(Java):力扣Stack集合OJ题

1、括号匹配问题 . - 力扣&#xff08;LeetCode&#xff09; 1.1 思路分析 根据栈的先进后出原则&#xff0c;我们可以这样解决问题&#xff1a; 遍历字符串&#xff0c;遇见左括号就将左括号push入栈&#xff1b;遇见右括号就pop出栈&#xff0c;将出栈的元素和该右括号比较…

pyparsing开启调试

在要匹配的表达后添加set_debug

【密码学】实现消息认证或数字签名的几种方式

消息认证的目的是验证消息的完整性和确认消息的来源。数字签名的目的是不仅验证消息的完整性和来源&#xff0c;还提供了不可否认性。此外&#xff0c;数字签名还可以验证消息的创建时间&#xff0c;防止重放攻击。那么具体有哪些实现的方式呢&#xff1f; 一、仅提供消息认证…

文件内容查阅

cat concatenate files and print on the standard output Linux中一个最简单的且最常用的命令是cat命令。其功能是在终端设备上显示文件内容。 cat命令-n选项用于显示行号。 tac concatenate and print files in reverse tac命令的功能是用于反向显示文件内容&#xff0c;即…

计算机网络复习笔记【面向考纲整理】

计算机网络复习笔记 一、计算机网络体系结构&#xff08;一&#xff09;计算机网络的概念、分类、组成与功能1.计算机网络的概念、组成与功能1.1计算机网络的概念1.2计算机网络的组成1.3计算机网络的功能 2.计算机网络的分类3.计算机网络的标准化工作及相关知识 &#xff08;二…

MT6816磁编码IC在工控机器人中的应用

在现代工业自动化领域&#xff0c;高精度的位置检测和控制技术对于机器人系统的稳定运行至关重要。MT6816磁编码IC作为一款先进的磁传感器解决方案&#xff0c;以其卓越的性能和稳定性&#xff0c;在工控机器人中得到了广泛的应用。本文将详细探讨MT6816磁编码IC在工控机器人中…

azure学习在日本IT工作的重要性

在日本数字化转型的浪潮中,微软Azure已经成为众多企业的首选云平台。作为全球第二大云服务提供商,Azure在日本市场的重要性与日俱增。本文将探讨为什么学习Azure对日本IT专业人士至关重要,以及如何通过lalapodo云原生技术的培训课程,快速掌握这一关键技能。 Azure在日本的战略地…

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图&#xff1a;b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…

element UI时间组件两种使用方式

加油&#xff0c;新时代打工&#xff01; 组件官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果图&#xff0c;如下&#xff1a; 第一种实现方式 <div class"app-container"><el-formref"submitForm":model&q…

探索 Prompt 的世界:让你的 AI 更智能

探索 Prompt 的世界&#xff1a;让你的 AI 更智能 引言什么是 Prompt&#xff1f;Prompt 的重要性如何编写有效的 Prompt1. 清晰明确2. 包含关键细节3. 提供上下文 实践中的 Prompt 技巧1. 多次迭代2. 实验不同风格3. 结合实际应用 总结 引言 随着人工智能&#xff08;AI&…

数据恢复篇:适用于 Android 的恢复工具

正在摆弄 Android 设备。突然&#xff0c;您意外删除了一张或多张图片。不用担心&#xff0c;您总能找到一款价格实惠的照片恢复应用。这款先进的软件可帮助 Android 用户从硬盘、安全数字 (SD) 或存储卡以及数码相机中恢复已删除的图片。 Android 上文件被删除的主要原因 在获…

采用自动微分进行模型的训练

自动微分训练模型 简单代码实现&#xff1a; import torch import torch.nn as nn import torch.optim as optim# 定义一个简单的线性回归模型 class LinearRegression(nn.Module):def __init__(self):super(LinearRegression, self).__init__()self.linear nn.Linear(1, 1) …

【Linux】数据流重定向

数据流重定向&#xff08;redirect&#xff09;由字面上的意思来看&#xff0c;好像就是将【数据给它定向到其他地方去】的样子&#xff1f; 没错&#xff0c;数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他的地方&#xff0c;例如文件或…