当前位置: 首页 > 知识库问答 >
问题:

在二次封装axios时,如何选择封装方式?

寿元白
2024-01-02

关于 axios 二次封装方法的问题

  1. 通过 class 创建多个实例

    class Http {   ...}const http1 = new Http()const http2 = new Http()
  2. 仅通过 axios 创建一个实例

    import axios from 'axios'const axiosInstance = axios.create({   baseURL: import.meta.env.VITE_APP_BASE_URL,   timeout: 5000})export default axiosInstance

哪种方法更好些呢?或者大家有更好的封装思路吗?

看了一些博客,关于用 class 包装的 axios, 给出来的好处是 不同的服务可以加不同的拦截器,我刚工作不久,不知道有什么场景需要用到这种需求。我更偏向于第二种方法,感觉我接触到的服务,只需要切换一下 baseUrl,并没有别的需求了。

共有1个答案

鲁斯伯
2024-01-02

在二次封装 axios 时,选择封装方式需要考虑实际需求和项目规模。

如果你希望为不同的服务使用不同的拦截器或配置,那么通过 class 创建多个实例可能是更好的选择。这种方式可以让你为每个服务独立设置拦截器和配置,使得代码更具可维护性和灵活性。例如,你可以为 API 请求较多的服务设置一个特定的拦截器来记录请求日志,而对于其他服务则不需要这个拦截器。

另外,如果你只是需要切换 baseUrl,那么通过 axios 创建一个实例可能更为简洁和方便。这种方式可以让你在整个项目中共享同一个 axios 实例,避免了重复的配置和初始化工作。同时,你可以通过配置该实例来统一管理请求的拦截器和超时时间等。

除了以上两种方式,还有其他的封装思路可供选择。例如,你可以使用工厂函数来创建 axios 实例,以便根据不同的参数返回不同的配置。或者你可以使用第三方库(如 axios-mock-adapter)来模拟 axios 请求,以便在测试中控制和模拟请求响应。

总之,选择合适的封装方式取决于你的实际需求和项目规模。在实践中,可以根据具体情况进行尝试和调整,以找到最适合你的方式。

 类似资料:
  • 本文向大家介绍vue axios 二次封装的示例代码,包括了vue axios 二次封装的示例代码的使用技巧和注意事项,需要的朋友参考一下 这段时间告诉项目需要,用到了vue。 刚开始搭框架的时候用的是vue-resource后面看到官方推荐axios就换过来了 顺便封装了一下 说明 1、为防止发起请求时,当前正在进行的相同请求,在请求拦截器中加入了hash判断,将相同请求url拦截 2、将axi

  • 本文向大家介绍vue中axios的二次封装实例讲解,包括了vue中axios的二次封装实例讲解的使用技巧和注意事项,需要的朋友参考一下 我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建request.js文件 代码解读:   将接口统一放到单独的文

  • 本文向大家介绍Vue二次封装axios为插件使用详解,包括了Vue二次封装axios为插件使用详解的使用技巧和注意事项,需要的朋友参考一下 照例先贴上 axios 的 gitHub 地址 不管用什么方式获取数据,对于一个项目来说,代码一定要利于维护其次是一定要写的优美,因此加上一层封装是必要的 vuejs2.0 已经不再维护 vue-resource,vuejs2.0 已经使用了 axios,这也

  • 本文向大家介绍你有封装过axios吗?主要是封装哪方面的?相关面试题,主要包含被问及你有封装过axios吗?主要是封装哪方面的?时的应答技巧和注意事项,需要的朋友参考一下 封装处理配置(路径、时间、token)、统一管理接口、错误处理、不同形式的请求、消息提示、loading等。

  • axios 取消上一次重复请求如何封装?

  • 6.6. 封装 一个对象的变量或者方法如果对调用方是不可见的话,一般就被定义为“封装”。封装有时候也被叫做信息隐藏,同时也是面向对象编程最关键的一个方面。 Go语言只有一种控制可见性的手段:大写首字母的标识符会从定义它们的包中被导出,小写字母的则不会。这种限制包内成员的方式同样适用于struct或者一个类型的方法。因而如果我们想要封装一个对象,我们必须将其定义为一个struct。 这也就是前面的小