ReST API 响应代码

ReST API response codes

我正在尝试设计一些 ReST API。

一个功能是客户端请求创建资源,服务应该做两件事

  1. 在一个系统 (s1) 上创建资源
  2. 将此数据与另一个系统 (s2) 同步。

然后客户端会访问s2来读取数据。一种可能的情况是资源在 s1 上创建但同步到 s2 失败。

现在,从服务的角度来看,请求部分成功,因此具有多状态正文的响应代码 207 可能可以使用,但从客户端的角度来看,资源尚不可用,因此这是一个失败(状态 - 5xx)。

现在在设计 API 时应该考虑哪个视角?

我最终实现它的方式是让我的处理异步。一旦客户端发送请求,服务就会持久化该请求,为该请求生成一个新的事务 ID,并发回一个包含 url 的位置 header 的 202 响应以查询事务状态。然后它尝试异步处理请求(在 s1 上创建资源并将其同步到 s2)。客户端同时可以继续检查交易状态,这将继续发送 "In progress" 状态。一旦请求被处理,交易状态就会更新为 "success"。在客户端的下一次查询中,返回成功状态,然后客户端可以继续。