如何使用TS对axios的进行简单封装

yizhihongxing

下面我将详细讲解如何使用 TypeScript 对 Axios 进行简单封装。

第一步:安装依赖

我们首先需要安装 axios@types/axios 两个依赖。 @types/axios 是对 axios 这个库的 TypeScript 类型定义文件,我们使用 TypeScript 的时候需要依赖。

npm install axios @types/axios --save

第二步:创建 axios 实例和请求封装类

我们使用 TypeScript 将 axios 请求进行封装,可以在服务端和客户端上使用。

我们先创建一个 axios 实例,并设置默认的配置选项,如下:

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';

// 创建 axios 实例
const instance: AxiosInstance = axios.create({
  baseURL: 'https://example.com/api', // 定义接口基础url
  timeout: 10000, // 超时时间
  withCredentials: true, // 跨域请求时是否需要使用凭证
  responseType: 'json', // 服务器响应返回的数据类型
  headers: {
    'Content-Type': 'application/json;charset=utf-8',
  },
});

// 定义封装 axios 请求的类
class Http {
  // 定义接口请求方法
  request<T>(config: AxiosRequestConfig): Promise<T> {
    return new Promise((resolve, reject) => {
      instance(config)
       .then((response: AxiosResponse<T>) => {
         resolve(response.data);
       })
       .catch((error: AxiosError) => {
         reject(error);
       });
    });
  }
}

export default Http;

我们封装了 request 方法,并将响应的数据类型设置为泛型,这样我们在使用的时候就知道返回值的具体数据类型。

第三步:封装接口请求

接下来我们就可以根据不同的业务需求封装请求接口了。

以 get 请求为例,我们在请求前可以进行一些公共的操作,如添加请求头、设置请求参数等。在得到响应后,再进行统一的处理。

import Http from './http';

class DataApi extends Http {
  /**
   * 获取数据列表
   * @returns Promise<any>
   */
  async getList(params: any): Promise<any> {
    try {
      const config = {
        url: '/list',
        method: 'get',
        params,
      };
      // 请求前添加请求头
      this.addHeaders(config);

      const res: any = await this.request(config);

      // 在得到响应后,进行统一的处理
      if (res.code === 0) {
        return res;
      } else {
        throw new Error(res.msg);
      }
    } catch (error) {
      throw error;
    }
  }

  /**
   * 添加请求头
   * @param config 
   * @returns 
   */
  addHeaders(config: AxiosRequestConfig): AxiosRequestConfig {
    config.headers = {
      'Authorization': 'Bearer ' + sessionStorage.getItem('token'),
      ...config.headers,
    };
    return config;
  }
}

export default new DataApi();

第四步:使用封装后的接口

我们在具体的业务代码中使用封装后的接口时,只需要调用封装的方法即可。示例如下:

import dataApi from './api';

async function fetchList() {
  try {
    const res: any = await dataApi.getList({ page: 1, size: 10 });
    console.log(res);
  } catch (error) {
    console.error(error);
  }
}

fetchList();

通过以上步骤,我们就完成了一个最简单的 TS 对 axios 封装的例子。在实际项目开发中,我们可以根据自己的需求,进行更多的功能和处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用TS对axios的进行简单封装 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Visual Studio Ultimate 2013 免费下载地址

    Visual Studio Ultimate 2013 免费下载地址 Visual Studio Ultimate 2013是一个功能强大的集成开发环境,可用于各种应用程序开发,包括Web应用程序、桌面应用程序和移动应用程序。它是针对专业开发人员打造的,并提供了许多工具和功能,以提高开发人员的生产力和代码质量。 以下是Visual Studio Ultima…

    其他 2023年3月28日
    00
  • Red Hat Linux 安全设置方法

    Red Hat Linux 安全设置方法 本文将详细讲解如何在 Red Hat Linux 操作系统中进行安全设置,主要包括以下内容: 关闭不必要的服务 安装防火墙并配置规则 更新系统补丁 利用 SELinux 增强安全 设置强密码和用户权限 实施访问控制 1. 关闭不必要的服务 首先,我们应该关闭不必要的服务,以减少攻击面和提高系统性能。可以通过以下命令查…

    other 2023年6月26日
    00
  • 右键-新建-WORD等快捷方式丢失了怎么找回?

    下面是完整攻略: 步骤一:检查快捷方式是否被删除 首先需要确认是否是快捷方式被删除。可以尝试在开始菜单的搜索栏中搜索应用程序,如Word,看是否能够找到该应用程序的图标。 如果在搜索栏中能够找到该应用程序的图标,则说明该应用程序没有被删除,可能是快捷方式丢失了。否则,可能是应用程序被卸载或删除了。 如果快捷方式丢失了,则可以按照以下步骤尝试找回它。 步骤二:…

    other 2023年6月27日
    00
  • 合金装备5幻痛药物开发位置及获得方法

    合金装备5幻痛药物开发位置及获得方法攻略 在合金装备5幻痛中,药物开发是一个重要的系统,可以帮助玩家提升角色的能力和生存能力。下面是详细的攻略,包括药物开发位置和获得方法。 药物开发位置 药物开发可以在基地的研发部门进行。在基地中,你可以找到研发部门,它位于主基地的东南方向。进入研发部门后,你可以找到药物开发台,这是进行药物开发的地方。 药物获得方法 方法一…

    other 2023年7月27日
    00
  • Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释

    在Visual Studio中,可以使用VAssistX插件来自动添加注释、函数头注释和文件头注释。下面是一个完整的攻略,包括安装插件、配置插件和使用插件等方面的内容。 安装插件 要安装VAssistX插件,请按照以下步骤操作: 打开Visual Studio编辑器,单击菜单栏中的“Tools”选项。 在下拉菜单中选择“Extensions and Upda…

    other 2023年5月5日
    00
  • 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测)

    下面是关于腾讯云万象优图图片存储的完整攻略,包括图片存储的基本概念、使用方法和两个示例等方面。 图片存储的基本概念 腾讯云万象优图图片存储是一种云端图片存储服务,它提供了高效、安全、可靠的图片存储和管理功能。图片存储的核心概念包括存储桶、对象、访问控制等。 使用方法 使用腾讯云万象优图图片存储可以分为以下几个步骤: 创建存储桶,例如创建一个名为“mybuck…

    other 2023年5月6日
    00
  • 一键自动更改本机IP地址BAT执行脚本 非常好用

    一键自动更改本机IP地址BAT执行脚本攻略 本攻略将详细介绍如何使用一键自动更改本机IP地址的BAT执行脚本。该脚本可以帮助用户快速更改本机的IP地址,提供了简单且方便的方式来管理网络设置。 步骤一:创建BAT执行脚本 打开任意文本编辑器,例如记事本。 在编辑器中输入以下内容: @echo off echo 正在更改IP地址… netsh interfa…

    other 2023年7月30日
    00
  • linux学习日记十二 磁盘配额(quota)

    下面是《Linux学习日记十二 磁盘配额(quota)》的完整攻略。 什么是磁盘配额(quota) 磁盘配额(quota)是一种机制,它可以限制用户在文件系统中可以使用的空间大小,以避免磁盘被某个用户的文件占满。 配置磁盘配额 在Linux系统中,使用磁盘配额需要安装quota软件包。以Debian/Ubuntu系统为例,使用以下命令安装quota: sud…

    other 2023年6月28日
    00
合作推广
合作推广
分享本页
返回顶部