我的后端包括多个微服务,每个微服务都有自己的基本网址。目前,我拥有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类的情况下实现这一目标。我可以在其中导入一系列方法并将其附加到类原型上,然后再导出吗?
我想找到一个合适的结构,以更好地分离每个实体,并使其在将来更易于构建和修改。
答案 0 :(得分:2)
说实话,将您的API类分成单独的文件/模块很好。当应用程序较小时,这似乎有些负担,但是随着应用程序的增长,它可以使事情井井有条。
您已经表明您的后端API已构建为微服务,为什么不也将它们分开放置在前端呢?当/开始遇到不同的端点时,管理API类会更加容易。
但是,在过去,我创建了一个基类,每个API类都可以从该基类继承,如果您希望以这种方式重用,我可以在其中设置通用逻辑,例如请求标头等。 / p>
我什至又走了一步,它将创建另一个层次的抽象来处理集成的发生方式,即通过HTTP,例如,我将声明使用哪个HTTP客户端。这样,如果我更改了HTTP客户端,则只能在一个地方进行更改
这种结构看起来像->
_ServiceProxy.js
常用功能,例如GET,POST,PUT,DELETE等。 此处定义的HTTP客户端 此处定义了高级错误处理
_someBaseAPI.js
一个抽象客户端,它将定义如何与一组常见的微服务进行交互,例如验证逻辑等
UserAPI.js
具体/静态的类,仅对如何处理与用户有关的请求/响应感兴趣
答案 1 :(得分:0)
您可以定义和导出一个单独的组件,所有api文件都将在该组件中导入并在其功能中使用单个api,然后就可以将其功能用于特定的api。