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

天网站建设苏州网站建设托管

天网站建设,苏州网站建设托管,河北建设工程信息网一体化平台,企业网站seo模板一、场景描述 为什么要对axios网络请求进行二次封装? 解决代码的复用,提高可维护性。 —这个有两个方案:一个是二次封装一个是实例化。(设置一些公共的参数,然后进行请求) 为什么可以解决代码的复用: 这是…

一、场景描述

为什么要对axios网络请求进行二次封装?
解决代码的复用,提高可维护性。 —这个有两个方案:一个是二次封装一个是实例化。(设置一些公共的参数,然后进行请求)
为什么可以解决代码的复用:
这是最简单格式的代码,需要定义url和请求方式。

axios({method: "get",url: "http://codercba.com:9002/banner",
}).then(function (response) {console.log(response);
}).catch(function (error) {console.log(error);
});

封装之后的请求方式,减少了点代码

    hyRequest.get({ url: "/banner" }).then((res) => {console.log(res);setImg(res.banners);console.log(img);});

Axios实例化的输出

const instance = axios.create({baseURL: "http://codercba.com:9002",
});instance.get("banner").then((response) => {console.log("实例化请求输出");console.log(response);
});

二、二次封装的代码实现

type.ts //定义一些类型

import type {InternalAxiosRequestConfig,AxiosRequestConfig,AxiosResponse,AxiosRequestHeaders,
} from "axios";export interface HYInterceptors<T = AxiosResponse> {   //定义拦截器类型requestSuccessFn?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig;requestFailureFn?: (err: any) => any;responseSuccessFn?: (res: T) => T;responseFailureFn?: (err: any) => any;
}export interface HYRequestConfig<T = AxiosResponse> extends AxiosRequestConfig {      //定义请求体的配置   interceptors?: HYInterceptors<T>;headers?: AxiosRequestHeaders;
}

request.ts //封装axios

import axios, { InternalAxiosRequestConfig } from "axios";
import type { AxiosInstance } from "axios";
import type { HYRequestConfig } from "./type";class HYRequest {instance: AxiosInstance;     //实例constructor(config: HYRequestConfig) {   this.instance = axios.create(config);     //实例化axiosthis.instance.interceptors.response.use((config) => {return config;},(err) => {return err;});this.instance.interceptors.response.use((res) => {return res.data;},(err) => {return err;});this.instance.interceptors.request.use(config.interceptors?.requestSuccessFn,config.interceptors?.requestFailureFn);this.instance.interceptors.response.use(config.interceptors?.responseSuccessFn,config.interceptors?.responseFailureFn);}request<T = any>(config: HYRequestConfig<T>) {if (config.interceptors?.requestSuccessFn) {config = config.interceptors.requestSuccessFn(config as InternalAxiosRequestConfig);}return new Promise<T>((resolve, reject) => {this.instance      //实例请求 .request<any, T>(config).then((res) => {if (config.interceptors?.responseSuccessFn) {res = config.interceptors.responseSuccessFn(res);}resolve(res);}).catch((err) => {reject(err);});});}get<T = any>(config: HYRequestConfig<T>) {return this.request({ ...config, method: "GET" });}post<T = any>(config: HYRequestConfig<T>) {return this.request({ ...config, method: "POST" });}delete<T = any>(config: HYRequestConfig<T>) {return this.request({ ...config, method: "DELETE" });}patch<T = any>(config: HYRequestConfig<T>) {return this.request({ ...config, method: "PATCH" });}
}export default HYRequest;

index.ts //实例化

import { BASE_URL, TIME_OUT } from "./config";
import HYRequest from "./request";const hyRequest = new HYRequest({baseURL: BASE_URL,timeout: TIME_OUT,interceptors: {requestSuccessFn: (config) => {return config;},},
});export default hyRequest;

可以看到其实封装也是先实例化之后再进行封装。为什么要这么做,实例化的东西不太好维护。包括对拦截器的更新。
在这里插入图片描述
三、上述内容整体概述
在这里插入图片描述

四、axios相关内容
在这里插入图片描述
在这里插入图片描述

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

相关文章:

  • 企业网站推广的方法有搜索引擎推广如何建网站模板
  • 东莞四网合一网站建设深圳百度推广
  • 东莞建站模板源码网络服务提供者的下列行为可以免责的是
  • 为什么用wp做网站静态网站源码
  • 常用网站开发工具免费试用网站源码
  • 房地产电商网站建设高端办公室装修公司
  • 旅游休闲类网站的建设网站底部模板源码
  • 网站做301网站编辑的岗位职责
  • 素材设计做的好的网站有哪些域名申请流程图
  • jsp做的网站运行都需要什么国家开发银行生源地助学贷款系统
  • 网站建设怎么说服客户搜索网站排名软件
  • 东莞网站建设技术做植物网站
  • 保定曲阳网站建设岳阳建设银行网站
  • 昆明网站建设天猫运营淘宝电商平台网站
  • 自贡企业网站建设公司wordpress 百度平台
  • 国外html5网站建设研究现状crm客户系统
  • 二手车网站制作wordpress显示选项屏蔽自定义栏目
  • 网站网页制作图片素材播放视频网站怎么做
  • 设计师网站十大网站一个网站的建设步骤是
  • 南充建设网站wordpress官方源文件结构
  • 网站制作合作安徽省建设工程造价信息网站
  • 因酷网站建设企业邮箱163登录入口
  • 网站建设需要使用阿里云吗网站添加锚点
  • 住房和城乡建设部标准定额网站外链建设对网站的影响
  • 郑州做的比较好网站公司吗网站建设资料收集
  • 如何删除自己建的网站大前端Wordpress图片主题top
  • 广州网站建设+美词洛阳 网站建设公司哪家好
  • 网站后台登陆密码移动互联网站建设
  • 厦门网站到首页排名长沙网络科技有限公司
  • 网站开发与运营怎么样福田网站建设设计公司哪家好