【发布时间】:2021-12-02 18:18:18
【问题描述】:
我们现在正致力于向外部世界公开我们的生产 Rest API,以便将不同的 3rd 方集成到我们的系统中。 我们遇到的问题之一是,由于高规模和性能的原因,许多API 命令都是异步处理的,因此无法将结果直接返回给调用者。
例如 - deliver order 命令可能需要一些时间才能完成,这意味着:
- 在响应正文中,我们无法返回传递文件,因为它们尚未处理,但只有 202
accepted状态。 - 我们不能保证在下次致电
get deliveries API时这些都准备好了。
对于如何解决这个异步问题,我们几乎没有什么想法,但我们想知道是否有一些用于异步系统公开 API 的最佳实践。其中大多数是 202 状态码,或者可能是 command ID,它们可以轮询/注册到 webhook,这似乎很潮。
使用这些 API 的客户是否可以理解他们执行的操作需要时间才能发生?并且同步响应并不总是可用?
【问题讨论】:
-
大概开始整个流程的操作会返回一个标识符,以后可以用来查询整个流程的状态?
-
是的,这是一个选项 - 我将其称为
command ID。问题是它是否是我们的系统和它的客户端之间的一个良好且方便的接口。
标签: api rest asynchronous event-driven-design