项目中使用Typescript封装axios

一、什么是 Typescript

Typescript 是JavaScript 的一个超集,它不仅支持JavaScript的语法,还增加了许多新的特性。最重要的是,Typescript 具有类型检查的能力,能在编译时即可检查出代码中的类型错误,提高了代码的可靠性和可维护性。

二、什么是 Axios

Axios 是一个基于Promise 的HTTP 客户端,用于浏览器和 Node.js。它使用封装的 XMLHttpRequests 对象或者浏览器原生的 fetch 进行网络请求,并且提供额外的一些辅助功能。它具有可立即使用的极简主义API,以及在高级用法下完全的定制能力。

三、使用 Typescript 封装 Axios

在项目中使用 Typescript 封装 Axios,主要步骤如下:

  1. 安装依赖:通过 npm 安装 axios、@types/axios 和 typescript 依赖包:
npm install axios @types/axios typescript
  1. 创建封装的 axios 类和接口文件:
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';

interface IAxios {
  request<T = any>(config: AxiosRequestConfig): Promise<T>;
  get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
  post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
  put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
  delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
}

class Axios {
  private axiosInstance: AxiosInstance;
  constructor() {
    this.axiosInstance = axios.create({ timeout: 10000 });
    this.init();
  }

  // 初始化拦截器
  private init() {
    // 定义请求拦截器
    this.axiosInstance.interceptors.request.use(
      (config: AxiosRequestConfig) => {
        // 可以根据业务需求修改请求头
        return config;
      },
      (error) => {
        return Promise.reject(error);
      }
    );

    // 定义响应拦截器
    this.axiosInstance.interceptors.response.use(
      (response: AxiosResponse) => {
        // 根据后端返回的状态码进行处理,如登录过期、请求失败等
        return response.data;
      },
      (error) => {
        return Promise.reject(error);
      }
    );
  }

  // 封装 axios 请求方法
  public request<T = any>(config: AxiosRequestConfig): Promise<T> {
    return this.axiosInstance
      .request<T>(config)
      .then((res) => res)
      .catch((error) => Promise.reject(error));
  }

  public get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
    return this.axiosInstance
      .get<T>(url, config)
      .then((res) => res)
      .catch((error) => Promise.reject(error));
  }

  public post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
    return this.axiosInstance
      .post<T>(url, data, config)
      .then((res) => res)
      .catch((error) => Promise.reject(error));
  }

  public put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
    return this.axiosInstance
      .put<T>(url, data, config)
      .then((res) => res)
      .catch((error) => Promise.reject(error));
  }

  public delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T> {
    return this.axiosInstance
      .delete<T>(url, config)
      .then((res) => res)
      .catch((error) => Promise.reject(error));
  }
}

export default Axios;
export { IAxios };

以上代码中,首先定义了封装的 axios 类和接口,通过 typescript 的泛型支持来实现返回数据类型的约束。在定义完类之后,我们需要在类里面通过 axios.create 方法来创建 axios 实例,这样我们就可以通过封装好的方法来发送请求了。

其中,init 方法是用于安装拦截器的。

  1. 测试接口

这里提供一个简单的示例来测试接口:

import Axios from './Axios';

interface IData {
  name: string;
  age: number;
}

const axios = new Axios();

axios
  .get<IData>('http://example.com/api/data')
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });

axios
  .post<IData>('http://example.com/api/data', { name: 'Tom', age: 18 })
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });

这里我们首先导入封装好的 axios 类,并且定义数据接口。然后创建 axios 实例,调用 get 和 post 方法向服务器发送请求,并输出结果。我们可以根据服务器返回的数据类型进行类型约束。

以上就是使用 Typescript 封装 axios 并测试接口的完整攻略。

阅读剩余 66%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:项目中使用Typescript封装axios - Python技术站

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

相关文章

  • C++ 仿函数使用讲解

    C++ 仿函数使用讲解 仿函数(Functor)是C++中的一种特殊类型的对象,它可以像函数一样被调用。仿函数可以作为参数传递给算法函数,也可以在容器中存储。在C++中,仿函数通常是通过重载函数调用运算符(operator())来实现的。 1. 仿函数的定义和使用 要定义一个仿函数,需要创建一个类,并在该类中重载函数调用运算符(operator())。下面是…

    other 2023年7月29日
    00
  • 将h265编码为hvc1编解码器

    以下是关于“将H.265编码为HEVC1编解码器”的完整攻略,包括基本概念、使用方法和两个示例。 基本概念 H.265和HEVC1都是视频编解码,H.265是一种高效的视频编码标准,而HEVC1是一种广泛使用的编码标准。将H.265编为HEVC1编解码器可以提高视频的兼容性和播放性能。 使用方法 以下是将H.265编码为HEVC1编解码器的方法: 安装FFm…

    other 2023年5月7日
    00
  • ARM Cortex-M 系列 MCU 错误追踪库 心得

    ARM Cortex-M 系列 MCU 错误追踪库 ARM Cortex-M 系列 MCU 错误追踪库是一种用于调试和错误追踪的工具,可以帮助开发人员快速定位和解决程序中的错误。本文将详细讲解 ARM Cortex-M 系列 MCU 错误追踪库的使用方法和心得,包括两个示例说明。 错误追踪库的作用 错误追踪库的作用是帮助开发人员快速定位和解决程序中的错误。错…

    other 2023年5月5日
    00
  • JVM的垃圾回收机制真是通俗易懂

    JVM的垃圾回收机制攻略 什么是JVM的垃圾回收机制? JVM(Java虚拟机)的垃圾回收机制是指在Java程序运行过程中,自动回收不再使用的内存空间的一种机制。它通过检测和回收不再被程序使用的对象,释放内存资源,以提高程序的性能和效率。 垃圾回收的基本原理 JVM的垃圾回收机制基于以下两个基本原理: 引用计数法:每个对象都有一个引用计数器,当有新的引用指向…

    other 2023年8月2日
    00
  • PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】

    以下是详细的PHP登录验证功能示例攻略: 1. 创建数据库 首先,在MySQL数据库中,创建一个名为“users”的表格,其中应包含以下列: id:主键,整型,自增长 username:用户名,字符串类型,长度为50 password:密码,字符串类型,长度为255 创建的SQL代码如下: CREATE TABLE `users` ( `id` int(11…

    other 2023年6月27日
    00
  • Java开启JMX远程监控服务配置

    下面是“Java开启JMX远程监控服务配置”的完整攻略。 什么是JMX? Java管理扩展(Java Management Extensions,JMX)是Java平台上的一套管理和监控概念的规范。在Java应用程序中启用JMX后,可以监控运行时状态、配置和性能等。 开启JMX远程监控服务配置步骤 以下是Java开启JMX远程监控服务配置的步骤: 1. 添加…

    other 2023年6月27日
    00
  • C语言结构体使用之链表

    C语言结构体使用之链表 1. 链表的定义 链表是一种动态数据结构,它由若干个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。 链表可以分为单链表、双向链表和循环链表几种形式,这里我主要介绍单链表的使用。 2. 链表的声明 链表的声明需要定义链表节点的数据类型,链表的头指针以及一些和链表相关的操作函数。具体代码如下: //定义链表节点的数据类型 …

    other 2023年6月27日
    00
  • 苹果发布macOS Catalina 10.15.3最新开发者测试版

    苹果发布了macOS Catalina 10.15.3的最新开发者测试版,让广大开发者可以提前体验并测试新版本。 要安装macOS Catalina 10.15.3最新开发者测试版,你可以按照以下步骤进行: 步骤一:申请开发者账号 在安装macOS Catalina 10.15.3最新开发者测试版之前,你需要先申请一个开发者账号。 示例说明: 如果你是开发者…

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