TypeScript封装axios——基本封装与拦截器精细控制

本文详细介绍了如何使用TypeScript封装axios,包括基本封装步骤、全局拦截器配置、为特定Request实例配置拦截器,以及如何在同一个实例中为不同请求设置不同拦截器。通过实例代码展示了具体实现方法。
摘要由CSDN通过智能技术生成

1、基本封装

封装一个Request的类,使得在外部可以调用此类的构造函数创建实例,创建的实例就对应axios实例,request/index.ts中代码如下:

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

class HDRequest {
   
  // 创建这个类的目的:每个创建出的HDRequest的实例都对应一个axios实例

  // 创建实例的方法:constructor()构造实例
  instance: AxiosInstance;
  constructor(config: AxiosRequestConfig) {
   
    this.instance = axios.create(config);
  }

  // 二次封装网络请求的方法
  request(config: AxiosRequestConfig) {
   
    return this.instance.request(config);
  }
}

export default HDRequest;

基本配置信息单独写在一个文件中,config/index.ts中代码如下:

export const BASE_URL = "http://codercba.com:8000";
export const TIME_OUT = 5000;

在service/index.ts中创建一个Request类的一个实例,并配置这个实例:

import HDRequest from "./request";
import {
    BASE_URL, TIME_OUT } from "./config/index";

const hdRequest = new HDRequest({
   
  baseURL: BASE_URL,
  timeout: TIME_OUT,
});

export default hdRequest;

在moduleds/home.ts中使用这个实例进行request:

import hdRequest from "..";

hdRequest
  .request({
   
    url: "/home/multidata",
  })
  .then((res) => {
   
    console.log(res.data);
  });

2、配置全局拦截器

request/index.ts

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

class HDRequest {
   
  // 创建这个类的目的:每个创建出的HDRequest的实例都对应一个axios实例

  // 创建实例的方法:constructor()构造实例
  instance: AxiosInstance;
  constructor(config: HDRequestConfig) {
   
    this.instance = axios.create(config);

    // 添加全局拦截器,每个实例都有
    this.instance.interceptors.request.use(
      (config) => {
   
        console.log("全局请求成功的拦截");
        return config;
      },
      (err) => {
   
        console.log(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值