当前位置: 首页 > news >正文

ts + axios + useRequest (ahooks)—— 实现请求封装

现在越来越多的项目开始ts化,我们今天就一块学习一下,关于ts的请求封装。

首先要安装两个依赖:

npm i axios -S

npm i ahooks -S

引入:

import { useRequest } from 'ahooks';
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

定义一个泛型接口,用于指定请求参数和响应数据的类型

interface RequestParams<T> {url: string;method: string;data?: T;
}// 定义一个范型函数,用于发送 GET 请求
function get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {return axios.get<T>(url, config);
}// 定义一个范型函数,用于发送 POST 请求
function post<T>(params: RequestParams<T>, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {return axios.post<T>(params.url, params.data, config);
}

使用ahooks的useRequest:

 // 使用 useRequest hooks 发送 GET 请求const { data, loading, error } = useRequest<{ name: string }>('https://api.example.com/data', {requestMethod: () => get('https://api.example.com/data'),});

直接使用get、post:

// 调用 GET 方法
get<{ name: string }>('https://api.example.com/data').then(response => {console.log(response.data.name);}).catch(error => {console.error(error);});// 调用 POST 方法
const postData = { name: 'John' };
const postParams = { url: 'https://api.example.com/data', method: 'post', data: postData };
post<{ status: string }>(postParams).then(response => {console.log(response.data.status);}).catch(error => {console.error(error);});

http://www.lryc.cn/news/114132.html

相关文章:

  • Springboot @Validated注解详细说明
  • STM32初学者,到底选标准库还是HAL库?
  • 小学生作业随机加减乘除运算计算习题答案 html源码
  • nvm下载安装配置
  • 2023-08-07力扣每日一题
  • uni——不规则tab切换(skew)
  • Docker安装Grafana以及Grafana应用
  • OpenSource - 分布式重试平台
  • oracle稳定执行计划
  • docker安装neo4j
  • 第十五章 定义 HL7 的 DTL 数据转换
  • 【笔记】移动光猫改桥接
  • 网络安全进阶学习第十四课——MSSQL注入
  • 【C语言】初阶结构体
  • 24届近5年南京理工大学自动化考研院校分析
  • 5.PyCharm基础使用及快捷键
  • RabbitMQ的安装
  • GPU版PyTorch对应安装教程
  • 医学影像PACS临床信息系统源码
  • Python(Web时代)——jinja2模板
  • 酷开系统 | 酷开科技,让数据变得更有价值!
  • uni——tab切换
  • 类图的6种关系和golang应用
  • Linux tar 备忘清单
  • 76. 最小覆盖子串
  • 科兴未来|2023“数智未来,聚放神采”医疗科技创新挑战赛
  • 第56步 深度学习图像识别:CNN梯度权重类激活映射(TensorFlow)
  • 云道资本:2023中国氢能源产业-氢制备深度研究报告(附下载)
  • java文件
  • pyqt5 如何终止正在执行的线程?