我正在尝试设计一些ReST API。
一个功能是客户端创建资源的请求,服务应该做两件事
然后客户端将访问s2以读取数据。可能的情况是在s1上创建资源但是到s2的同步失败。
现在,从服务的角度来看,请求部分成功,因此可以使用具有多状态主体的响应代码207,但从客户端的角度来看,资源尚不可用,因此这是一个失败(状态 - 5xx)。
现在在设计API时应该考虑哪个角度?
答案 0 :(得分:0)
我最终实现这一点的方法是使我的处理异步。一旦客户端发送请求,服务就会持久保存请求,为此请求生成新的事务ID,并发回202响应,其中包含用于查询事务状态的url的位置标头。然后它尝试异步处理请求(在s1上创建资源并将其同步到s2)。同时客户可以继续检查交易状态,这将继续发送"进行中"州。处理完请求后,交易状态将更新为" success"。在客户端的下一个查询中,返回成功状态,然后客户端可以继续前进。