iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何使用TS对axios的进行简单封装
  • 520
分享到

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

ts axios简单封装ts封装axios 2022-11-13 19:11:46 520人浏览 八月长安
摘要

目录1.安装axiOS2.在合适路径下新建request.ts(名称可随意),例如可以在项目的src下创建utils文件夹创建request.ts3.导入axios并创建axios实

1.安装axios

npm i axios

2.在合适路径下新建request.ts(名称可随意),例如可以在项目的src下创建utils文件夹创建request.ts

3.导入axios并创建axios实例

//引入axios
import axios from 'axios'

//使用指定配置创建axios实例
const instance = axios.create({
  // 基础路径
  baseURL: 'Http://pcapi-xiaotuxian-front-devtest.itheima.net/',
  // 请求超时时间
  timeout: 5000,
  // ....其他配置
})

4.封装请求函数

① 查看axios的类型声明文件

② 请求配置对象的类型

从图中可知AxiosRequestConfig是axios请求配置对象的接口,例如下面的代码,axios函数的第一个参数就是AxiosRequestConfig接口的实例。而泛型D则是请求配置对象(axios函数的第一个参数)中data的类型,默认类型为any,因为AxiosRequestConfig接口内容太多就不列出来了。

axios({
  url: 'http://',
  method: 'post',
  data: {}
  // ....
})

③ 响应对象的类型

axios发送数据请求后会返回的promise实例,AxiosResponse就是这个promise实例成功后回调函数的第一个参数的类型,例如下面的代码,代码中的response的类型就是AxiosResponse。

axios({
  url: 'http://',
  method: 'post',
  data: {}
}).then((response) => {
  console.log(response.data)
})

从下图可知,AxiosResponse接口第一个泛型参数T,泛型T就是AxiosResponse接口中data的数据类型,默认类型为any,也就是上图response.data的类型。第二个泛型参数和请求配置对象一样,是AxiosRequestConfig接口中data的类型,默认类型为any。

④ axios.request函数

从axios的声明文件中可以看出直接使用axios()发送网络请求是不能指定泛型参数的,而axios.request()对泛型的支持非常友好,请看下图

request函数的第一个泛型T指定了第二个泛型AxiosResponse接口中data的类型。第二个泛型R默认为AxiosResponse,指定了request函数返回的promise实例成功的回调函数的第一个参数的类型。第三个泛型D指定了请求配置对象中data的数据类型。(看不懂的话,请再结合第②③点再看一次)

⑤ 开始封装

// 后台给我们的数据类型如下
// 泛型T指定了Response类型中result的类型,默认为any
type Response<T = any> = {
  // 描述
  msg: string
  // 返回的数据
  result: T
}

// AxiosRequestConfig从axios中导出的,将config声明为AxiosRequestConfig,这样我们调用函数时就可以获得TS带来的类型提示
// 泛型T用来指定Reponse类型中result的类型
export default <T> (config: AxiosRequestConfig) => {
  // 指定promise实例成功之后的回调函数的第一个参数的类型为Response<T>
  return new Promise<Response<T>>((resolve, reject) => {
    // instance是我们在上面创建的axios的实例
    // 我们指定instance.request函数的第一个泛型为Response,并把Response的泛型指定为函数的泛型T
    // 第二个泛型AxiosResponse的data类型就被自动指定为Response<T>
    // AxiosResponse从axios中导出的,也可以不指定,TS会自动类型推断
    instance.request<Response<T>>(config).then((response: AxiosResponse<Response<T>>) => {
      // response类型就是AxiosResponse<Response<T>>,而data类型就是我们指定的Response<T>
      // 请求成功后就我们的数据从response取出并使返回的promise实例的状态变为成功的
      resolve(response.data)
    }).catch((error :any) => {
      // 请求失败的处理
      reject(error)
    })
  })
}

⑥ 使用

import request from "@/utils/request";

// 商品分类
export interface CateGory {
  id: string;
  name: string;
  picture: string;
  children: Category[];
  goods: CategoryGoods[];
}
// 商品分类下的商品
export interface CategoryGoods {
  id: string;
  name: string;
  desc: string;
  price: string;
  picture: string;
}


export const reqGetCategory = () => {
  // 指定我们封装的request函数的第一个泛型的类型为Category[],也就是指定 Response<T> 中T的类型
  return request<Category[]>({
    url: '/home/category/head',
    method: 'get'
  })
}

这样我就可以得到类型提示了

下图resonse的类型是Response

下图response.result的类型是Category[]

下图是response.result数组中元素的类型是Category

从下图我们可以看出response的类型

还可以在拦截器里添加更多功能,这里就不再赘述了。如有错误,请多包涵。

总结

到此这篇关于如何使用TS对axios的进行简单封装的文章就介绍到这了,更多相关TS对axios简单封装内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何使用TS对axios的进行简单封装

本文链接: https://www.lsjlt.com/news/170405.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用TS对axios的进行简单封装
    目录1.安装axios2.在合适路径下新建request.ts(名称可随意),例如可以在项目的src下创建utils文件夹创建request.ts3.导入axios并创建axios实...
    99+
    2022-11-13
    ts axios简单封装 ts封装axios
  • vue如何对axios get pust put delete进行封装
    这篇文章给大家分享的是有关vue如何对axios get pust put delete进行封装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。axios.jsimpor...
    99+
    2024-04-02
  • vue中如何简单封装axios浅析
    把axios注入到Vue中 import axios from 'axios'; Vue.prototype.$axios = axios; import axios f...
    99+
    2024-04-02
  • axios的简单封装以及使用实例代码
    前言 最近在构建项目时,想到了请求的封装,之后就琢磨如何封装才好。虽然对各位大佬来说可能是个小事情,但对我来说也算是一个小小的挑战。在我设想中请求的一些基本配置与具体接口应该放于两个...
    99+
    2024-04-02
  • Vue前端如何对axios的封装和使用
    这篇文章将为大家详细讲解有关Vue前端如何对axios的封装和使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Axios 是一个基于 promise 的 HTTP 库。...
    99+
    2024-04-02
  • 如何使用Typescript封装axios
    本文小编为大家详细介绍“如何使用Typescript封装axios”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用Typescript封装axios”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。基础封装首...
    99+
    2023-07-02
  • vue3和ts封装axios及使用mock.js的方法是什么
    这篇文章主要讲解了“vue3和ts封装axios及使用mock.js的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3和ts封装axios及使用mock.js的方法是什么”吧...
    99+
    2023-07-05
  • vue中如何使用axios和封装
    这篇文章给大家分享的是有关vue中如何使用axios和封装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue官方推荐使用 axios发送请求首先上需求1.需要封装全局调用2.返...
    99+
    2024-04-02
  • C#如何对消息进行封装
    这篇文章给大家分享的是有关C#如何对消息进行封装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、C#消息概述 Windows下应用程序的执行是通过消息驱动的。消息是整个应用程序的工作引擎,我们需要理解掌握我们使...
    99+
    2023-06-17
  • react使用axios进行api网络请求的封装方法详解
    目录前言准备工作开始封装axiosconfig.jsrequest.js进行请求总结前言 最近写react项目使用到axios进行请求封装,在这里记录一下,希望可以帮助到初学的小伙伴...
    99+
    2024-04-02
  • 如何封装一个好用的axios
    这篇文章主要介绍了如何封装一个好用的axios的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何封装一个好用的axios文章都会有所收获,下面我们一起来看看吧。通用能力列一下我想要这个通用请求能达到什么样的效果...
    99+
    2023-07-02
  • Vue使用axios发送请求并实现简单封装的示例详解
    目录一、安装axios二、简单使用1.配置2.发送请求三、封装使用1.创建js封装类2.配置3.发送请求一、安装axios npm install axios --save 二、简单...
    99+
    2024-04-02
  • Vue3+TypeScript封装axios并进行请求调用的实现
    不是吧,不是吧,原来真的有人都2021年了,连TypeScript都没听说过吧?在项目中使用TypeScript虽然短期内会增加一些开发成本,但是对于其需要长期维护的项目,TypeS...
    99+
    2024-04-02
  • Python使用zlib对数据进行简单压
    在Python丰富的库中,也有着对数据进行压缩处理的库(zlib)。对于需要数据压缩的应用程序,此模块中的功能允许使用zlib库进行压缩和解压缩。 (本文只对简单的字符串数据进行压缩,如需压缩文件等复杂数据类型,详见zlib官网...
    99+
    2023-01-31
    简单 数据 Python
  • 如何进行ActiveMQ的简单入门与使用
    这期内容当中小编将会给大家带来有关如何进行ActiveMQ的简单入门与使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是消息中间件消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传...
    99+
    2023-06-21
  • 使用pyinstaller怎么对exe程序进行封装
    使用pyinstaller怎么对exe程序进行封装?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先安装pyinstaller.命令:pip install&nb...
    99+
    2023-06-07
  • 如何在vue项目中使用封装后的axios
    这篇文章给大家介绍如何在vue项目中使用封装后的axios,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么要使用VueVue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试...
    99+
    2023-06-06
  • Vue如何二次封装axios为插件使用
    这篇文章给大家分享的是有关Vue如何二次封装axios为插件使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vuejs2.0 已经不再维护 vue-resource,vuejs...
    99+
    2024-04-02
  • 如何进行javascript对XMLHttpRequest异步请求的面向对象封装
    本篇文章给大家分享的是有关如何进行javascript对XMLHttpRequest异步请求的面向对象封装,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起...
    99+
    2024-04-02
  • 如何进行orion的简单测试
    如何进行orion的简单测试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。orion是一个做IO测试的小巧工具,可以测试随机读写,模拟混合负载等。在oracle 11g已经...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作