axios封装(例如:请求头、token、超时、BaseUrl、请求错误、请求重复)

2023-11-18

axios封装



前言

1.为什么封装Axios

封装 Axios 是一种常见的做法,以提高前端项目的代码可维护性和可重用性。在这篇博客中,我将向您介绍如何使用 Axios来进行网络请求,并将其封装成一个可重用的模块,以便在整个项目中使用。

2.包括的功能

  1. 创建 Axios 实例
  2. 请求拦截器
  3. 响应拦截器
  4. 全局错误处理
  5. 设置用户权限令牌
  6. 生成请求键
  7. 根据环境设置 baseURL
  8. API 方法:提供了一组 API 方法,包括设置自定义请求头、发起 GET、POST、PUT 和 DELETE 请求

一、Axios是什么?

Axios 是一个流行的 JavaScript 库,用于进行 HTTP 请求。它可以在浏览器和 Node.js 环境中使用,提供了一种简单而强大的方式来与后端服务器进行通信。Axios 具有许多有用的功能,如拦截器、异步请求和请求取消等。

二、安装 Axios

1. 安装axios (JavaScript版本)

//安装axios(javascript版本)
npm install axios

2. 安装axios (TypeScript版本)

//安装axios(typescript版本)
npm install axios @types/axios

三、封装 Axios

1.axios (JavaScript版本)

代码如下(示例):

import axios, {
   
  AxiosInstance,
  AxiosRequestConfig,
  AxiosResponse,
  AxiosError,
  CancelTokenSource,
} from "axios";

let userToken = '';  // 用于存储用户的权限token

// 创建 Axios 实例
const defaultAxiosConfig = {
   
  timeout: 10000,  // 请求超时时间为10秒
  // 添加其他默认配置项
};

function createAxiosInstance(options = {
   }) {
   
  const instance = axios.create({
    ...defaultAxiosConfig, ...options });

  // 请求拦截器,添加用户令牌到请求头
  instance.interceptors.request.use(config => {
   
    if (userToken) {
   
      config.headers.Authorization = `Bearer ${
     userToken}`;
    }

    return config;
  }, error => {
   
    // 处理请求错误
    return Promise.reject(handleGlobalError(error));
  });

  // 响应拦截器,处理全局错误
  instance.interceptors.response.use(response => {
   
    const requestKey = generateReqKey(response.config);
    pendingRequests.delete(requestKey);
    return response.data;
  }, error => {
   
    // 处理响应错误
    return Promise.reject(handleGlobalError(error));
  });

  return instance;
}

// 处理全局错误
function handleGlobalError(error) {
   
  if (error.response) {
   
    switch (error.response.status) {
   
      case 401:
        return "错误:缺少身份信息";
      case 403:
        return "错误:没有权限";
      case 404:
        return "错误:资源未找到";
      case 500:
        return "错误:服务器内部错误";
      default:
        return "服务器响应错误:&
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

axios封装(例如:请求头、token、超时、BaseUrl、请求错误、请求重复) 的相关文章

随机推荐

  • SpringMVC的请求(参数绑定注解、Restful风格的参数的获取、自定义类型转换器、获得Servlet相关API)

    SpringMVC的请求 获得请求参数 SpringMVC的请求 获得请求参数 SpringMVC的请求 获得请求参数 1 SpringMVC的请求 获得请求参数 配置全局乱码过滤器 2 SpringMVC的请求 获得请求参数 参数绑定注解
  • Serializable简单介绍

    Serializable 序列化 什么是序列化 序列化是将对象状态转化为可保持或者传输的格式过程 与序列化相反的是反序列化 完成序列化和反序列化 可以存储或传输数据 一般情况下 在定义实体类时会使用Serializable 为什么要序列化对
  • 硬件学习——I2C

    I2C简单来讲就是2线的串行总线 由SDA Serial Data Line 和SCL Serial Clock Line 构成 它遵循主从结构 允许多主多从 主设备 发起 停止数据输出 并且通过控制时钟来控制数据传输过程 从设备 响应主设
  • 若依vue分离版使用字典

    首先来看官方文档 接下来我们进行操作 第一步已经添加完 来做第二步 打开index vue 在index vue中 找到变量定义的位置 一般在data 中 定义一个新数组
  • LayUI中的基本元素之面板

    前言 最近在准备找工作的事项 但是作为一个后台也是需要了解一些前端框架的 就目前的来说有大火的VUE 但是VUE还是存在一定的学习成本 所以决定先从对后台友好的LayUI开始入手先做一些小项目练练手 后面会考虑使用VUE ElementUI
  • React.Component

    React Component 本章节提供了 React class 组件的详细 API 参考 本章节默认你已熟悉基本的 React 概念 例如 组件 Props 以及 State 生命周期等 概览 React 的组件可以定义为 class
  • teacher-student network

    最近读到一篇文章 An On device Deep Neural Network for Face Detection 讲的是苹果如何将基于深度学习的人脸识别方法应用到iPhone上 同时解决多任务并行及能耗的问题 文中提到了一个teac
  • python第三方库概述_计算机二级python:python第三方库概述

    1 本节课我们进行讲解python第三方库概述 先看一下考纲考点如图所示 2 然后我们来看一下知识导图如图所示 3 查看一下pip工具安装然后进行根据要求步骤安装 4 然后我们来看一下pyinstaller库概述如图所示 5 接下来我们再来
  • android 图像识别sdk,在android系统下实现图像识别

    首先我们了解下 Android系统常用的图像识别框架 一 调用一些不开源库进行识别 旷视的图像识别及 OCR 文字识别库 及其他厂家如阿里 百度 华为 腾讯的 OCR 文字识别库等 二 调用一些开源库进行识别 一 tensorflow 训练
  • python写出梯度下降的代码

    以下是一个使用Python实现的基本梯度下降 Gradient Descent 算法的示例 导入必要的库 import numpy as np import matplotlib pyplot as plt 定义损失函数 def compu
  • seq2seq模型

    转载自 http blog csdn net sunlylorn article details 50607376
  • k--最近邻算法(KNN)

    目录 一 简介 二 举例理解 三 算法步骤 四 其他说明 1 关于距离的计算 2 超参数 3 关于K值的选择 4 取K值的方法 5 关于决策依据 6 优缺点 五 代码 一 简介 邻近算法 KNN 是数据挖掘分类技术最简单的方法之一 所谓K最
  • Asp.net_Study学习笔记

    Asp net Study web基本原理 浏览器向服务器发送请求 服务器响应 报错 HTTP Error 403 14 Forbidden Web 服务器被配置为不列出此目录的内容 解决 打开控制面板里的程序 点击启用或关闭Windows
  • Matlab实现Kmeans算法(每行代码标注详细注解)

    本文主要为了完成平日作业 并进一步加深对算法的理解 也希望对来访的读者有所帮助 该算法的优化Kmean 算法的代码详解已在其他文章给出 Matlab实现Kmeans 算法 每行代码标注详细注解 高垚淼的博客 CSDN博客 Matlab实现B
  • ESD静电放电最常用的三种模型及其防护设计

    推荐好文 建议直接看链接 1 静电放电最常用的三种模型及其防护设计 http www 360doc com content 17 0827 14 32066980 682502209 shtml 人体模型HBM 机器模型MM 充电器件模型C
  • LA@齐次线性方程组解的结构

    文章目录 齐次线性方程组解的结构 解的性质 齐次线性方程组的解的线性组合还是方程组的解 基础解系 通解 定理 齐次线性方程组基础解系存在定理 齐次线性方程组的基础解系包含的向量个数 秩 应用和示例 推论1 推论2 推论3 转置矩阵对的乘积秩
  • 解决jar文件不显示图标问题

    版权声明 本文为转载文章 遵循 CC 4 0 BY SA 版权协议 本文链接 https blog csdn net qyfx123456 article details 104713149 一 问题的产生 最近 重新装了JDK 配置了环境
  • 生命在于学习——Socket编程(偏安全方面)

    本篇文章仅用于学习记录和交流 不得用于其他违规用途 产生的不良后果 自己负责 一 Socket介绍 首先socket 套接字 是工作在应用层和传输层之间一个抽像层 为什么要有他呢 虽然我们已经有了ip port可以和世界上任意一台计算机上的
  • 扫雷游戏是一款十分经典的单机小游戏。 问题 H: 扫雷游戏

    题目描述 扫雷游戏是一款十分经典的单机小游戏 在n行m列的雷区中有一些格子含有地雷 称之为地雷格 其他格子不含地雷 称之为非地雷格 玩家翻开一个非地雷格时 该格将会出现一个数字 提示周围格子中有多少个是地雷格 游戏的目标是在不翻出任何地雷格
  • axios封装(例如:请求头、token、超时、BaseUrl、请求错误、请求重复)

    axios封装 文章目录 axios封装 前言 1 为什么封装Axios 2 包括的功能 一 Axios是什么 二 安装 Axios 1 安装axios JavaScript版本 2 安装axios TypeScript版本 三 封装 Ax