gpt4 book ai didi

java - 如何跟踪两个团队之间的 json 请求/响应变化并在 smth 时得到通知。被改变了

转载 作者:行者123 更新时间:2023-11-30 09:24:59 27 4
gpt4 key购买 nike

情况如下:

位于不同地点的两个团队正在开发同一产品,但我们无法访问彼此的资源。一个团队 - 后端(应用服务器),另一个团队 - GUI(客户端)。

服务器请求/响应变化非常频繁,第二个团队(客户端)通过理智知道这一点为时已晚,

我们的目标是:在流程的早期发现问题或双方的任何变化,甚至在它引发错误之前。

我的想法:所有App server支持的和UI使用的json response/request都将被转换为xsd(基于json与xml相当的事实)然后我们将有一个 xsd:1.服务器端将维护并使每个构建都可以访问2. 客户端将验证自己(即使是每晚的测试)

第二个想法:应用程序服务器将有一个集成测试(我们以任何方式都有),它将验证请求/响应格式与一些 json 内容让我们说存储在文件系统上,作为下一步,测试将检查 json 格式是否从以前的测试运行中更改。每晚运行这些集成测试,并在检测到违反契约(Contract)后向其他团队发送邮件。

还有什么好的想法可以跟踪这些持续的变化吗?

谢谢伊戈尔

最佳答案

您描述的是管理对不受您直接控制的系统使用的已发布接口(interface)的更改的经典问题。

您的两个初始想法都在正确的轨道上:第一个是让您的服务器团队就更改进行沟通的方式,以便您的客户端团队可以通过一种明显的方式来查看更改内容。第二种是捕捉通信失败情况的方法,以便在错误成为生产问题之前检测到错误。

我认为诀窍在于获得正确的详细信息,以便合适的人在合适的时间听到这些变化。为此,在您的第一个想法的基础上,这里有一些额外的想法:

  • 让集成测试作为客户端和服务器团队之间的共同努力来维护。然后客户端团队可以编写测试来验证他们的代码所做的期望,然后服务器团队可以在发布任何更改之前在非生产环境中运行这些测试。这假设只有一个客户端团队:如果您正在处理许多第三方使用的公共(public) API,那么您可能别无选择,只能让服务器团队简单地猜测客户端的需求是什么;这不太理想,但如果您的 API 非常简单并且没有太多需要考虑的用例,它仍然可以工作。

  • 让客户团队尽早知道即将发生的重大变更,以便他们准备好以冷静和放松的方式解决它,而不是疯狂地争先恐后地做出一些工作来解决生产问题.如果您编写的工具能够查看两个版本的架构并在代码发布供客户团队处理之前发现任何重大更改,那么您生成的架构可以帮助您解决这个问题。

  • 就什么被认为是重大变更以及他们的客户端代码应该在哪些方面保持健壮与客户团队达成一致。例如,您可能会同意,向现有对象添加新属性不是破坏性更改,客户端代码必须简单地忽略它,但这需要服务器开发人员遵守纪律,永远不要添加会破坏的新属性改变另一个现有的解释。一旦你们就什么构成重大变更达成一致,客户端开发人员就可以围绕这些假设构建他们的代码,而服务器开发人员可以注意到被认为是重大变更的变更,并将它们标记出来以便及早沟通。

  • 实现机制,为某些类型的更改启用多步弃用周期。例如,如果您经常重命名属性,您可以在服务器端代码中构建一个功能,允许您声明一个对象属性是另一个对象的别名。使服务器代码立即在 JSON 负载中包含属性的所有可能名称,这样客户端就可以工作,而不管它期望哪个名称。然后您可以告诉客户端开发人员该别名将在给定时间段内保留,之后他们应该更改代码以使用新名称,您可以删除别名。一个相关的策略是从你的模式中自动生成一个简单的客户端库,并让客户端团队使用它而不是直接访问 API;然后,您的客户端库可以处理这些类型的转换问题,以避免通过网络发送的对象膨胀。

我已应用上述所有策略来管理对我维护的 Web 服务 API 的更改。每种情况都不同,但希望这些想法能给您一些想法,让您了解如何在您的环境中实现类似的效果。

关于java - 如何跟踪两个团队之间的 json 请求/响应变化并在 smth 时得到通知。被改变了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462744/

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