我有一个通过 REST api 从产品 1 到产品 2 再到产品 1 的工作流。
我们希望保持我们的 API RESTful 并使用最佳实践。
产品 2 向产品 1 提供反馈的最佳方式是什么。
- 可以 2 将事件传递给他自己的 API 命名空间/项目以 POST 到 1 的 API。
- 或者 2 是否应该在 2 中的任何功能处直接调用 1 的 API。
换句话说,REST API 进行出站调用是闻所未闻的,还是 REST API 严格来说是一个仅等待输入的观察服务。
在回答您的第一个问题“REST API 可以发出请求吗?”时,我会说“不”……但服务 API 背后的应用程序肯定可以向其他 REST API 发出请求。
一个 REST API 没有指定对其他 API 的“请求”......您应该从每个用户/API 客户端的角度来考虑 REST API,而不是从多个服务的“协调视图”的角度来考虑,这是另一个层次的视图系统。这意味着,服务 1 的用户将看到该服务的 REST API,并且服务 1 在内部可以调用服务 2 或其他服务,反之亦然,但服务 1 的用户(API 客户端)不应感知。所以,我想说 REST API 不是关于“出站调用”,而是由给定应用程序提供的“观察服务”,基本上在 REST 中可以对资源(使用给定 URI)执行的操作(HTTP 动词)。
详细介绍一下您的情况,如果我理解正确,您有一些对服务 1 的调用,它触发对服务 2 的调用,并回复服务 1。此调用从服务 1 到服务的 REST API 2,并且在许多情况下,它可以等待服务 2 的响应(服务 2 将简单地回复服务 1 的调用)。我们可以想象这个调用不是“阻塞”的更复杂的行为,这将导致当服务 2 完成一些计算(由服务 1 调用触发)时,需要定义一个从服务 2 到服务 1 API 的新调用“返回”。在最后一种情况下,可以通过从服务 2 到服务 1 的某个 API 端点的一种“回调”调用来实现。
希望这有助于为您的情况带来一些启示。