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

怎么做网站呀建设网站公司哪里好相关的热搜问题解决方案

怎么做网站呀,建设网站公司哪里好相关的热搜问题解决方案,广西搜索推广,建设银行网站打不开用什么浏览器本案例旨在教授如何使用Axios库结合TypeScript泛型进行HTTP请求的高级封装,以提升代码的可复用性和类型安全性。我们将通过一个具体的示例,学习如何创建一个通用的请求函数,它能够适应不同类型的API响应,并在请求前后加入自定义逻…

      本案例旨在教授如何使用Axios库结合TypeScript泛型进行HTTP请求的高级封装,以提升代码的可复用性和类型安全性。我们将通过一个具体的示例,学习如何创建一个通用的请求函数,它能够适应不同类型的API响应,并在请求前后加入自定义逻辑(如错误处理、Token注入等)。

1. 引入必要的库和类型

  • 引入Axios:首先,我们导入Axios库及其相关类型,用于发起网络请求。
  • 定义类型:引入AxiosInstance和AxiosRequestConfig类型,以增强代码的类型提示和安全性。
import axios, { type AxiosResponse } from 'axios';
import type { AxiosInstance, AxiosRequestConfig } from 'axios';

2. 创建Axios实例并配置

  • 配置基础设置:通过axios.create方法创建一个Axios实例,并设置基础URL和超时时间等默认配置
const axiosInstance: AxiosInstance = axios.create({baseURL: 'https://tenapi.cn/v2/',timeout: 10000
});

3. 添加请求和响应拦截器

  • 请求拦截器:在请求发送前可以统一处理逻辑,如添加认证信息。
  • 响应拦截器:对返回的响应进行统一处理,如错误码判断。
axiosInstance.interceptors.request.use(config => {// 可以在此处添加Token或其他请求头return config;
}, error => Promise.reject(error));axiosInstance.interceptors.response.use(res => res, error => Promise.reject(error));

 4. 定义API响应接口

  • ApiResponse接口:定义一个泛型接口来规范API响应的结构,包含状态码、消息、时间戳和数据部分。
export interface ApiResponse<T = any> {code: number;msg: string;timestamp: number;data: T;
}

5. 封装请求函数

  • 泛型request函数:创建一个异步的泛型函数request,它接受请求配置并返回经过类型转换的响应数据。 
export async function request<T>(config: AxiosRequestConfig): Promise<T> {return axiosInstance.request<ApiResponse<T>>(config).then(res => res.data);
}

6. 使用封装的请求函数

  • 具体请求示例:定义一个数据模型Hot,并使用request函数发起请求,处理响应数据
interface Hot {name: string;url: string;hot: number;
}request<Array<Hot>>({url: '/baiduhot',method: 'get'
}).then(res => {if(res.code === 200) {const hot = res.data[0];console.log(hot.name);}
});

6. 完整代码

import axios, {type AxiosResponse} from 'axios';
import type { AxiosInstance, AxiosRequestConfig } from 'axios';/* 创建axios实例 */
const axiosInstance : AxiosInstance = axios.create({baseURL: 'https://tenapi.cn/v2/',timeout: 10000
});/* 封装实例的请求拦截器 */
axiosInstance.interceptors.request.use( config  => {return config;
}, (error) => {return Promise.reject(error);
});/* 封装实例的响应拦截器 */
axiosInstance.interceptors.response.use( (res : AxiosResponse<any>)  => {return res;
}, (error) => {return Promise.reject(error);
});/* 定义接口 */
export interface ApiResponse<T> {code: number;msg: string;timestamp: number;data: T;
}/* 封装实例的请求方法 */
export async function request<T>(config: AxiosRequestConfig ) {// axios实例的 request 接受的第一个泛型参数,就是返回数据data的类型return axiosInstance.request<ApiResponse<T>>(config).then((res) => res.data);
}/* 如何使用代码如下  */
interface Hot {name: string;url: string;hot: number;
}request<Array<Hot>>({url: '/baiduhot',method: 'get'
}).then(res => {if(res.code == 200) {let hot = res.data[0];console.log(hot.name);}
});

提示:更多的Axios配置信息请看官网

http://www.yayakq.cn/news/201959/

相关文章:

  • 鄂尔多斯网站制作 建设穿搭速递html网页制作代码
  • 买网站自己做wordpress彩色美化
  • 做建筑设计网站可以做网站的行业
  • 建立网站成本网页升级访问永久你懂的
  • 进行网站开发 如何搭建环境wordpress上一篇下一篇箭头
  • 出名的网站建设软件python爬数据做网站
  • 网站做收款要什么条件数据库能上传网站模板
  • 做网站程序广西网站建设原创
  • 公司做网站需要哪些内容济南网站建设招标
  • 什么是商务网站郑州快速建站价格
  • 班级网站的建设调查表建设兼职网站目的
  • 山西做二级建筑资料在哪个网站微信人生里面微网站怎么做
  • 做彩票网站违法的吗宁波市建筑业管理信息网
  • 搭建wordpress网站2021ppt模板免费下载 素材
  • 清理网站数据库a+网络推广平台
  • 网站建设网络门户wordpress 4.8.1
  • 网站表格怎么做小程序开发的服务怎么样
  • 什么是网站制作app网站按域名跳转不同的页面
  • 做物理的网站手机网站的视频怎么才能下载
  • 国家基础设施建设网站网站运营需要哪些知识
  • 我想看黄牌台州网站建设优化
  • 为何网站不被百度收录网站会员等级审核功能怎么做
  • wordpress多站点不显示免费无网络游戏大全
  • 建网站英语怎么说百度推广官网电话
  • 做网站花多钱网络推广竞价是什么
  • wordpress开启子站点个人做网站 用什么语言
  • 数码网站建设维护贵州 网站建设
  • 网站宽度一般是多少辽宁人工智能建站系统软件
  • 中文网站的seo怎么做申请网站空间就是申请域名
  • 如何建设小说网站省建设厅网站合同备案用户名