Axios 
1. Axios 
1.1 Axios 简介 
Axios 是基于 Promise 可以用于浏览器和 Node.js 的网络请求库。
- 它是 isomorphic 的(即同一套代码可以运行在浏览器和 Node.js 中)
- 在服务端它使用原生 Node.js http模块
- 而在客户端(浏览器)则使用 XMLHttpRequests
1.2 特性 
- 从浏览器创建 XMLHttpRequests
- 从 Node.js 创建 HTTP 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换 JSON 数据
- 客户端支持防御 XSRF
1.3 安装 
安装依赖:
sh
npm install axios
bower install axios
yarn add axios浏览器端:
html
<!-- jsDelivr CDN -->
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<!-- unpkg CDN -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>CommonJS:
js
const axios = require('axios/dist/browser/axios.cjs'); // browser
const axios = require('axios/dist/node/axios.cjs'); // node2. 用例 
2.1 CommonJS 
js
const axios = require('axios').default;2.2 浏览器 
GET 请求示例:
js
const axios = require('axios');
// 向给定 ID 的用户发起请求
axios.get('/user?ID=12345')
  .then(function (response) {
    // 处理成功情况
    console.log(response);
  })
  .catch(function (error) {
    // 处理错误情况
    console.log(error);
  })
  .then(function () {
    // 总是会执行
  });上述请求也可以按以下方式完成
js
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // 总是会执行
  });支持 async / await 用法:
js
async function getUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}发起一个 POST 请求:
js
axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });发起多个并发请求:
js
function getUserAccount() {
  return axios.get('/user/12345');
}
function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}
Promise.all([getUserAccount(), getUserPermissions()])
  .then(function (results) {
    const acct = results[0];
    const perm = results[1];
  });3. 下面学习什么 
API 参考手册 的文档结构和讲解的内容,可用于参考和学习。
- Axios API - 创建新的请求 - axios(config)
- axios(url[, config])
 
- 列举可用的请求方式别名
 
- 创建新的请求 
- Axios 实例 - 使用 axios.create([config])创建实例
- 列举可以用的实例方法
 
- 使用 
- 请求配置 - 列举所有创建请求时可以用的配置选项
 
- 响应结构 - 列举一个请求的响应包含的信息
- 列举在 then()方法中包含的信息
- 解释 catch()方法可以捕获的错误信息
 
- 默认配置 - 如何设置全局 axios默认值
- 如何设置自定义实例默认值
- 解释配置的优先级
 
- 如何设置全局 
- 拦截器 - 如何在请求或响应被 then()或catch()处理前拦截它们
- 如何移除拦截器
- 如何给自定义的 axios实例添加拦截器
 
- 如何在请求或响应被 
- 错误处理 - 处理错误的一个示例
- 如何使用 validateStatus选项,自定义抛出错误的 HTTP code
- 如何使用 toJSON()获取更多关于 HTTP 错误的信息
 
- 取消请求 - 如何使用 cancel token取消一个请求
- 如何创建 cancel token- CancelToken.source工厂方法创建一个- cancel token
- 传递一个 executor()函数到CancelToken的构造函数
 
- 注意:可以使用同一个 cancel token取消多个请求
 
- 如何使用 
- 请求体编码 - 默认情况下,将 JavaScript 对象序列化为 JSON
- 如何以 application/x-www-form-urlencoded格式发送数据
- 在浏览器中 - 可以使用 URLSearchParams API
- 或者使用 qs库编码数据
 
- 可以使用 
- 在 Node.js 中 - 可以使用 querystring模块
- 也可以使用 qs库
- 可以使用 form-data库获取Form data
- 或者使用一个拦截器
 
- 可以使用 
 
- 默认情况下,将 JavaScript 对象序列化为