Axios的优点:为什么它是当前最受欢迎的HTTP请求库

从2014年Axios随着Vue.js的发布而出现以来,Axios已经成为了以 Node.js 为平台的一个广泛应用的轻量级的 HTTP 请求客户端。虽然还有其他的HTTP请求库,但是Axios由于其简单性、跨平台性以及对Promise的支持而变得特别受欢迎。

一、简单性

Axios的简单性体现在如下的几个方面。

1、简单的API

Axios提供了简单易懂的API,这使得我们可以在JavaScript代码中非常容易地发起HTTP请求。

axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
})

在这个简单的例子中,Axios拦截器的全局配置可以做任何事情,如添加请求头,添加请求参数,控制错误信息等等。

2、内置CSRF保护

跨网站请求伪造防范(CSRF)攻击是指攻击者冒充用户提交 request,以达到把攻击者自己的请求提交到目标网站的目的。Axios在请求中内置了CSRF保护,这意味着我们无需手动添加CSRF tokens到所有的请求。Axios会自动识别所有的请求,并将XHR请求转换为AJAX,并自动添加CSRF tokens。

3、请求取消

当我们发出一个请求并想要取消它时,Axios使得它非常简单。我们只需要传递一个配置对象中的cancelToken,就能够取消请求操作。

// 创建一个取消的令牌。
const CancelToken = axios.CancelToken;
let cancel;

// 向服务器发送请求。
axios.get(`/user/12345`, {
  cancelToken: new CancelToken(function executor(c) {
    // 「executor」函数接收一个取消函数作为参数
    cancel = c;
  })
})
.catch(function (error) {
  if (axios.isCancel(error)) {
    console.log('Request canceled', error.message);
  } else {
    // 处理响应
  }
});

// 取消请求
cancel();

4、统一异常处理

Axios提供了一个方便的方法,在所有的请求中集中处理所有的异常。这样,当HTTP错误发生时,我们只需要在一个地方处理即可。

axios.interceptors.response.use((response) => {
    return response
}, (error) => {
    //global error handling
    console.log(error.response.data.error)
    return Promise.reject(error)
})

二、跨平台性

Axios的另一个主要优点是跨平台性。Axios在浏览器中运行良好,同时在 Node.js 服务器上也同样适用。这使得我们可以轻松地在客户端和服务器端使用同一个HTTP请求库。

三、Promise和async/await的支持

Promise和async/await是JavaScript中重要的异步编程技术,可以让代码更加清晰和易于理解,并且使用Promise可以更好的处理HTTP请求和响应。

// Promise写法
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

// async/await写法
async function fetchUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.log(error);
  }
}

四、性能和速度

Axios在性能和速度上都有比较好的表现。其中主要体现在以下两个方面。

1、自动json化请求数据和响应数据

Axios自动地将请求和响应的数据 JSON 化,而不是像许多其他的HTTP请求库一样需要手动序列化请求数据和解析响应数据。

2、并发处理请求

在许多情况下,我们需要同时发起多个HTTP请求。Axios的并发处理请求可以大大提高程序的性能。Axios使用的底层库(默认是XMLHttpRequest或者是fetch)在浏览器中支持并行请求,并且 Axios中的拦截器可以重新配置请求和响应。

五、扩展性

Axios的最后一个优点是其扩展性。Axios有一个模块化的设计,可以非常方便地扩展其功能,以满足我们的自定义需求。Axios还使用拦截器以及插件来实现功能扩展。

1、拦截器

拦截器使得我们可以在请求被发出之前或之后来对请求和响应进行修改。在请求过程中,我们可以通过添加请求拦截器、响应拦截器和错误拦截器来自定义拦截器处理流程,以实现统一的请求和响应处理。

// 添加请求拦截器
axios.interceptors.request.use((config) => {
  // 在发送请求之前做些什么
  return config
}, (error) => {
  // 处理请求错误
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use((response) => {
  // 处理响应数据
  return response
}, (error) => {
  // 处理响应错误
  return Promise.reject(error)
})

2、插件

Axios是基于JavaScript Promise完成的,这意味着我们可以很方便地为Axios添加功能。我们可以为Axios创建自己的插件,以添加新的请求方法,创建全局实例,添加请求拦截器等等。

// 创建一个插件
const axiosInstance = axios.create();
const plugin = (instance) => {
  instance.interceptors.request.use((config) => {
    //拦截请求
    return config;
  }, (error) => {
    //处理请求错误
    return Promise.reject(error);
  });
};

// 使用插件
axiosInstance.plugin(plugin);

结论

Axios是一个强大、简单、可靠并且广泛应用的 HTTP 库。它能够在浏览器和服务器环境下运行,并提供了许多强大的功能、以及扩展和配置选项,这使得它成为了当前最受欢迎的HTTP请求库。

原创文章,作者:BBRSA,如若转载,请注明出处:https://www.506064.com/n/372323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BBRSABBRSA
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相关推荐

  • 使用axios获取返回图片

    使用axios获取返回图片是Web开发中很常见的需求。本文将介绍如何使用axios获取返回图片,并从多个方面进行详细阐述。 一、安装axios 使用axios获取返回图片前,首先需…

    编程 2025-04-29
  • Axios请求数据乱码问题解决

    本文将从以下三个方面详细阐述Axios请求数据乱码问题的原因和解决方法: 一、设置请求头 Axios请求数据乱码的原因可能是因为请求时没有设置请求头的编码方式,而且默认的编码方式是…

    编程 2025-04-28
  • axios body传参详解

    在前端开发中,我们经常与后台进行数据交互,其中一个很重要的环节就是数据传参。而axios是目前非常优秀的一款前端HTTP请求库,它可以轻松实现不同方式的数据传参,本文将以axios…

    编程 2025-04-25
  • 红黑树的优点与使用

    一、红黑树的背景介绍 红黑树是一种自平衡二叉查找树。它是由Rudolf Bayer在1972年发明的,也是一种近似平衡的二叉查找树。红黑树的每个节点上都有存储的值,每个节点也必须符…

    编程 2025-04-23
  • axios面试题详解

    一、axios简介 axios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js环境中发送请求。它具有以下几个特点: 1、支持浏览器和Node.js //ax…

    编程 2025-04-23
  • axios.put详解

    一、基本介绍 axios是一个基于Promise的HTTP客户端,可用于浏览器和node.js。 axios的特点: 从浏览器中创建XMLHttpRequests 从node.js…

    编程 2025-04-23
  • JQuery-3.6.0.min.js:全球最受欢迎的JavaScript库

    一、JQuery 介绍 JQuery 是当前全球最受欢迎的 JavaScript 库之一,用于简化程序员用 JavaScript 编写代码的难度。因为 jQuery 的设计者们有意…

    编程 2025-04-22
  • Vue中使用axios的完整指南

    一、axios在vue中的使用慕课笔记 Axios 是一个基于 Promise 的 HTTP 库,可用于浏览器和 Node.js,它是一种简单,易用且兼容性好的发起HTTP请求的方…

    编程 2025-04-20
  • 详解Axios Patch方法

    Axios是一个基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。它提供了一个易于使用的API,可以处理HTTP请求和响应。Axios支持所有现代浏览器,包括…

    编程 2025-04-20
  • Mybatis的优点

    一、简化SQL编写 Mybatis是一种基于Java语言的持久层框架,可以避免传统 JDBC 编程中,大量繁琐的、重复的代码,使得 SQL 语句的编写更为简单和方便。开发者只需要定…

    编程 2025-04-13

发表回复

登录后才能评论