一篇学通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);  
  });



相关推荐

  1. npm

    2024-07-14 07:08:03       34 阅读
  2. 文章熟练掌握 Axios

    2024-07-14 07:08:03       55 阅读
  3. axios 官网速

    2024-07-14 07:08:03       45 阅读
  4. python

    2024-07-14 07:08:03       50 阅读
  5. AJAX请求(axios

    2024-07-14 07:08:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 07:08:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 07:08:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 07:08:03       62 阅读
  4. Python语言-面向对象

    2024-07-14 07:08:03       72 阅读

热门阅读

  1. 软设之访问者模式

    2024-07-14 07:08:03       20 阅读
  2. git 学术加速

    2024-07-14 07:08:03       27 阅读
  3. element-ui 表格固定头和固定列表格错位

    2024-07-14 07:08:03       18 阅读
  4. PlantUML 教程:绘制时序图

    2024-07-14 07:08:03       23 阅读
  5. 如何做到高级Kotlin强化实战?(三)

    2024-07-14 07:08:03       28 阅读
  6. GO语言中的接口(interface)

    2024-07-14 07:08:03       28 阅读
  7. QEMU源码全解析 —— CPU虚拟化(1)

    2024-07-14 07:08:03       27 阅读