博客
关于我
axios详解
阅读量:666 次
发布时间:2019-03-15

本文共 2465 字,大约阅读时间需要 8 分钟。

Axios技术文档


Axios 是一款基于 Promise 的异步请求库,支持在浏览器和 Node.js 中发送 HTTP 请求。它主要基于 XMLHttpRequest(XHR)封装,通过支持 Promise API 提供更简便的异步操作接口。Axios 的核心特点是支持拦截器(interceptors),可以自定义请求和响应的处理逻辑,同时支持多请求发起,以及取消请求功能。


1. Axios 请求方式

Axios 提供多种方法来发起 HTTP 请求,包括 GET、POST、PUT、DELETE、PATCH 和 HEAD 等。无论是通过直接调用还是通过配置选项发起,开发者都可以灵活设置请求参数。

  • axios(config):可以直接传递一个配置对象来发起请求。
  • axios.request(config):与 axios(config) 功能相同,但主要是为了区分自定义实现。
  • axios.get(url [, config]):用于 GET 请求。
  • axios.post(url [, data [, config]]):用于 POST 请求。
  • axios.put(url [, data [, config]]):用于 PUT 请求。
  • axios.delete(url [, config]):用于 DELETE 请求。
  • axios.patch(url [, data [, config]]):用于 PATCH 请求。
  • axios.head(url [, config]):用于 HEAD 请求,不会返回 body 数据。

2. Axios 示例

import axios from 'axios'//_browser commentary_// 示例 1:GET 请求axios.get('/user?ID=12345')// 示例 2: POST 请求axios.post('/user', { firstName: 'simon', lastName: 'li' })// 示例 3:并发请求const get1 = axios.get('/user/12345')const get2 = axios.get('/user/12345/permission')axios.all([get1, get2])  .then((results) => console.log(results))  .catch(err => console.log(err))

3. Axios 配置选项

Axios支持通过配置对象或者实例化后续对调请求,主要配置选项包括:

  • method:指定请求方法,默认为 GET。
  • url:请求 URL,若非绝对 URL,可自动补上 baseURL
  • baseURL:指定请求的基准 URL,若无 URL,会拼接到 baseURL
  • transformRequest:用于对请求数据进行预处理,仅适用于 PUT、POST、PATCH 请求。
  • transformResponse:用于对响应数据进行处理。
  • headers:自定义请求头部信息。
  • params:请求参数,需为纯对象。
  • data:请求体数据,适用于 PUT、POST、PATCH 请求。
  • timeout:请求超时时间,默认为 30000ms。
  • withCredentials:指定是否携带凭证(如 cookie)。
  • auth:用于 HTTP 认证,提供 username 和 password。
  • responseType:指定响应类型,如 'json'、'formdata' 等。

4. Axios 实例化

通过 axios.create 创建一个新的实例,支持自定义默认设置:

const instance = axios.create({  baseURL: 'http://localhost:3000/api',  timeout: 2000,  headers: {    'X-Custom-Header': 'foobar'  }})// 使用实例发起请求instance.get('/user', {  params: {    ID: 12345  }})

5. Axios 拦截器

Axios 提供请求拦截器和响应拦截器,用于在请求/响应处理前后自定义逻辑。

请求拦截器

axios.interceptors.request.use(config => {  // 做一些预处理逻辑  return config}, err => {  // 处理请求错误  return Promise.reject(err)})

响应拦截器

axios.intercepts.response.use(response => {  // 处理响应数据  return response}, err => {  // 处理响应错误  return Promise.reject(err)})

6. 错误处理

通过 validateStatus 选项可以自定义处理 HTTP 状态码:

axios.get('/user/12345', {  validateStatus: status => status < 500 // 只处理状态码小于 500 的错误})

取消请求

const CancelToken = axios.CancelToken// 创建取消 tokenconst source = CancelToken.source()// 发起请求并传递 cancelTokenaxios.get('/user/12345', {  cancelToken: source}).catch(err => {  if (axios.isCancel(err)) {    console.log('请求被取消')  }  // 处理其他错误})

7. 参考文档

如需更详细的功能介绍,可参考 Axios 官方文档

转载地址:http://uyrmz.baihongyu.com/

你可能感兴趣的文章
Node.js 8 中的 util.promisify的详解
查看>>
node.js debug在webstrom工具
查看>>
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
查看>>
Node.js RESTful API如何使用?
查看>>
node.js url模块
查看>>
Node.js Web 模块的各种用法和常见场景
查看>>
Node.js 之 log4js 完全讲解
查看>>
Node.js 函数是什么样的?
查看>>
Node.js 函数计算如何突破启动瓶颈,优化启动速度
查看>>
Node.js 切近实战(七) 之Excel在线(文件&文件组)
查看>>
node.js 初体验
查看>>
Node.js 历史
查看>>
Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
查看>>
Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
查看>>
Node.js 异步模式浅析
查看>>
node.js 怎么新建一个站点端口
查看>>
Node.js 文件系统的各种用法和常见场景
查看>>
Node.js 模块系统的原理、使用方式和一些常见的应用场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>