javascript - 创建具有多个基本 URL 的 Javascript API 类

标签 javascript class ecmascript-6 prototype

我的后端包括多个微服务,每个微服务都有自己的基本 URL。目前,我有 usermetadata 服务,但这可能会在未来扩展。

我有一个 React 应用程序,我正在尝试创建一个 API 包装类,以便在我需要修改某些内容时调用。我的第一种方法是为每个服务创建多个 api 实例并根据需要导入:

import userApi from '../userApi'
import metadataApi from '../metadataApi'

userApi.getUser(user_id)
metadataApi.getCollections()

但我想使用一种不同的方法,不需要记下每个实体的位置即可使用它,如下所示:

import API from '../api'

API.getUser(user_id)
API.getCollections()
API.deleteUser(user_id)

但我不确定如何在不膨胀 API 类的情况下实现这一点。我可以在其中导入一组方法,然后在导出之前将它们附加到类原型(prototype)吗?

我想找到一个合适的结构来更好地分离每个实体,以便将来更容易构建和修改它。

最佳答案

老实说,将您的 API 类分成单独的文件/模块是可以的。当应用程序很小时,感觉有点开销,但随着它的增长,它有助于使事情井井有条。

您已经指出您的后端 API 被构建为微服务,为什么不将它们也保留在前端的独立实体中?当/如果您开始访问不同的端点时,管理您的 API 类会更容易。

不过,在过去,我创建了一个基类,每个 API 类都可以继承自该基类,我可以在其中设置通用逻辑,例如请求 header 等,如果您想以这种方式进行一些重用的话。

我什至又更进一步,这将创建另一个抽象级别来处理集成的发生方式,即通过 HTTP,我将在其中声明要使用哪个 HTTP 客户端。这样,如果我更改 HTTP 客户端,我只更改一个地方

那种结构看起来像->

_ServiceProxy.js

GET、POST、PUT、DELETE等常用函数 此处定义的 HTTP 客户端 此处定义的高级错误处理

_someBaseAPI.js

一个抽象的客户端,它将定义如何与一组常见的微服务交互,例如授权逻辑等

UserAPI.js

具体/静态类,只对如何处理与用户有关的请求/响应感兴趣

关于javascript - 创建具有多个基本 URL 的 Javascript API 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56525187/

相关文章:

C++排序数组是指向类的指针

javascript - 如何使用 es6 过滤对象值

javascript - 通过 jquery/javascript 动画添加一个类

javascript - 无法真正调整 Canvas 图像的大小

java - 无法从另一个JAVA类调用方法

类中的 PHP echo 查询结果?

javascript - ES 模块 : deprecate export

javascript - 一.二.三,一.二,一,如何在javascript中对每个组合执行函数?

javascript - MongoDB 脚本无法加载,但代码可以在 Mongo shell 中运行

javascript - 命令行参数问题——跳过可选函数参数?