并发错误时抛出什么状态代码?

问题描述 投票:2回答:1

我有一个休息日,除其他事项外,约会并与之保持联系。当2个人“同时”尝试在同一天,同一时间预订时,就会出现问题。

显然,第一个提出请求的人将能够预定约会,因此我将返回状态200。另一方面,稍后到达的人将提出相同的请求,但是服务器将抛出错误,因为它不能保留相同的约会(已保留)。在这种情况下,应该抛出什么http状态代码?

家族代码500似乎不正确,因为抛出的异常是由业务的逻辑所引起的。

另一方面,因为请求的格式合理,所以400口之家的州代码似乎也不正确

谢谢!

rest api http http-status-codes
1个回答
1
投票

我自己对此进行了研究,而琼斯·哈珀的409冲突建议最合适。

https://tools.ietf.org/html/rfc7231#section-6.5.8

409(冲突)状态代码表示请求无法由于与目标的当前状态冲突而完成资源。此代码用于用户可能会能够解决冲突并重新提交请求。服务器应该生成一个有效载荷,该有效载荷应为用户提供足够的信息识别冲突的根源。

最有可能响应PUT请求而发生冲突。对于例如,如果使用版本控制且表示形式为PUT包含对资源所做的更改,这些更改与较早的(第三方)请求,原始服务器可能使用409响应以表明它无法完成请求。在这个的情况下,响应表示可能包含信息对于基于修订历史记录合并差异很有用。

© www.soinside.com 2019 - 2024. All rights reserved.