gpt4 book ai didi

spring - 如何设计前端来处理多个后端版本

转载 作者:行者123 更新时间:2023-12-04 04:11:05 26 4
gpt4 key购买 nike

在我公司,我们使用 Spring Boot 来实现后端 API,使用 React 来实现前端,包括 Web 界面和 Android/iOS 应用程序。

由于我们的产品是企业软件,客户实际上必须付费才能获得最新的后端 API 以部署在他们自己的服务器上。但是,我们的移动应用程序会在 App Store 上定期更新。这会导致最终用户设备上的移动应用程序可能是较新版本,而客户机器上的后端 API 是较旧版本。我们计划向后支持最多 3 个次要版本,这意味着 FE 5.4 将最多支持后端 5.2。

后端确实有一个端点来返回当前版本号。但是,当我们添加新功能并可能在后端 API 中引入重大更改时,我对我们的前端实现如何保持与旧 API 版本的向后兼容性有点无能为力。

我完全理解这个问题可能没有任何漂亮的解决方案。我希望如果您经历过这种痛苦,可以分享您尝试过的方法、采取的 final方法以及需要注意的潜在陷阱方面的经验。

我相信我自己和其他遇到这个问题的人会非常感激:)。

最佳答案

您的解决方案将类似于任何使用 Feature Toggle 的前端解决方案,但我已经可以想象它不会很漂亮。

基本上,在您的代码中,您将有很多 if/else 语句或某种形式的包装器,它们在下面对每个 UI/逻辑/功能(这是版本升级的重大更改)执行相同的操作。

我建议对于您拥有的每一层(UI、逻辑、API 调用),您应该开始根据后端返回的版本进行切换。你最终会得到很多看起来多余的代码和很多看起来像这样的代码。 (如果您只支持两个版本。如果您有更多版本,请使用 switch)

render() {
{version === "1.0.0" ? <VersionA /> : <VersionB/>}
}

但是,您可以编写一个实用程序方法,根据版本包装并返回不同的组件。通过这样做,您可以更轻松地删除将来不再需要支持的组件。

const versionSwitcher = (version, ...Components) => {
switch (version) {
case "1.0.0":
return Components[0];

case "1.1.0":
return Components[1];
}
}

这当然会增加所有层的复杂性,但鉴于您的情况,我认为这并不简单。一件好事是尽量保留自己的 viewModel 并且永远不要将来自 API 的响应直接传递到组件中。这减少了 API 和您的组件之间的耦合,并使这更容易一些。

关于spring - 如何设计前端来处理多个后端版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61714318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com