博客
关于我
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/

你可能感兴趣的文章
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>