如何在不同服务之间保持 HTTP API 同步

How to keep HTTP API in sync across different services

例如,我有服务 A 和服务 B,其中 B 向 A 发起 HTTP 请求。

如何保证服务A提供的端点与服务B使用的端点相同

一个反例是服务 A 更新端点参数,但服务 B 没有捕获它。

补救措施是,服务 A 和服务 B 从包中导入一些 HTTP 端点定义,作为唯一的真实来源。

我觉得确保一致性的这一部分是基于最大努力的。但我想知道是否有一些实用的技术可以达到这个目的。

如您所建议的共享 lib/package 持有合同并不是保证,因为每项服务实际上需要 import/use 这个外部 lib/package 的最新版本,一旦它发生变化。 ..

您可以做几件事:

  1. 基于合同的测试 - 在您的 CI/CD 管道上,您可以让服务 B 调用服务 A(在集成环境中)以验证合同是否仍然有效(连接到双方的模拟将更容易隔离合同测试与完全集成测试)。
  2. 更新 API 的一个好的约定是尽可能保持向后兼容性。
  3. 如果您不能向后兼容,您可以使用 API 版本控制。