axios的简单的使用

简介: axios的简单的使用

Axios 是什么?

Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。

特性

  • 从浏览器创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF

基础用法

引入之后直接使用,不做任何配置

import axios from 'axios';
// 向给定ID的用户发起请求
axios.get('/user?ID=12345')
  .then((response) => {
    // 处理成功情况
    console.log(response);
  })
  .catch((error) => {
    // 处理错误情况
    console.log(error);
  })

常规用法

一般我们在项目中使用都会统一的配置接口的baseUrl,超时时间等等

import axios from 'axios';
const _axios = axios.create({
    baseUrl: 'http://localhost:9333/api',
    timeout: 1000 * 15,
})

配置请求拦截器

在请求拦截器中可以做一些常规配置,比如要给请求头添加token或附加一些特殊的共有数据等等

_axios.interceptors.request.use(config=>{
    // 添加token
    config.headers.token = 'token';
    // do something
},error=>Promise.reject(error))

配置返回拦截器

在请求拦截器中可以做一些常规配置,比如要给请求头添加token或附加一些特殊的共有数据等等

_axios.interceptors.response.use(config=>{
    // do something
},error=>{
    // 做一些统一的错误处理
    // 401 需要授权
    // 404 接口不存在
    // 405 请求方式不允许,本来接口是get的而你使用了post
    // 等等
})

取消重复请求

在项目中会经常碰到一个按钮连续多次的快速点击,这样就会在极短的时间内请求多次,实际上我们只需要一次返回结果就可以,这个时候就可以取消之前多次的重复提交。

在此我们会用到 axios.CancelToken 这个方法,具体使用方法可以查看文档

封装取消请求的方法

class CancelToken {
  constructor() {
    this.store = new Map();
  }
  add (config)  {
      const key = this.getKey(config);
      new axios.CancelToken((cancel) => {
        if (this.store.has(key)) {
            this.remove(config)
        }
        this.store.set(key, cancel);
      });
  }
  remove (config)  {
      const key = this.getKey(config);
    if (this.store.has(key)) {
      let cancel = this.store.get(key);
      cancel(key);
      this.store.delete(key);
    }
  }
  // 根据请求参数获取唯一的key
  getKey(config){
    const { method, url, params, data } = config;
    return [method, url, params, data].join('-');
  }
}

使用CancelToken方法

const cancelToken = new CancelToken();
// 请求拦截器
axios.interceptors.request.use(config=>{
    cancelToken.add(config);
},error=>Promise.reject(error))
// 接收拦截器
axios.interceptors.response.use(
    response => {
        const config = response.config;
        cancelToken.remove(config)
        Promise.resolve(response)
    },
    error => {
        return Promise.reject(error);
    }
);

至此,axios的常规使用就介绍完了,感谢各位的阅读。


相关文章
|
资源调度 JavaScript
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
8270 2
如何生成RSA,RSA2密钥
密钥生成或如何使用(创建应用):[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url] 1.密钥生成工具下载:[url]https://docs.
1920 13
el-tree技巧之只能选中最后一层级的子节点以及查找树结构第一个无子节点的叶节点
el-tree技巧之只能选中最后一层级的子节点以及查找树结构第一个无子节点的叶节点
|
10月前
|
编解码 人工智能 缓存
自学记录鸿蒙API 13:实现多目标识别Object Detection
多目标识别技术广泛应用于动物识别、智能相册分类和工业检测等领域。本文通过学习HarmonyOS的Object Detection API(API 13),详细介绍了如何实现一个多目标识别应用,涵盖从项目初始化、核心功能实现到用户界面设计的全过程。重点探讨了目标类别识别、边界框生成、高精度置信度等关键功能,并分享了性能优化与功能扩展的经验。最后,作者总结了学习心得,并展望了未来结合语音助手等创新应用的可能性。如果你对多目标识别感兴趣,不妨从基础功能开始,逐步实现自己的创意。
312 60
|
9月前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
2983 1
|
前端开发
ElementPlus中total出现el.pagination.total,显示总数没有出现怎样解决,出现的是英文,不是中文如何解决,这里如何配置中文,配置中文
ElementPlus中total出现el.pagination.total,显示总数没有出现怎样解决,出现的是英文,不是中文如何解决,这里如何配置中文,配置中文
|
区块链 C# Windows
以太坊开发入门,完整入门篇
一个适合区块链新手的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 一个用区块链、星际文件系统(IPFS)、Node.
3716 0
|
监控 网络协议 API
利用zabbix api批量添加数百台监控主机
利用zabbix api批量添加监控主机 在公司规模很庞大的时候,每次都手动添加监控主机将会很麻烦,我们可以利用zabbix的api去批量添加监控主机 本次我们将实现用一台主机虚拟出100台主机,并通过api的方式自动添加监控主机
954 0
利用zabbix api批量添加数百台监控主机
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
2348 0