我的后端包括多个微服务,每个微服务都有自己的基本 URL。目前,我有 user
和 metadata
服务,但这可能会在未来扩展。
我有一个 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/