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

Ger*_*imo 8 api rest http http-status-codes

我有一个休息,除其他外,收到一个日期,并用它进行预订。当 2 个人“同时”尝试在同一天、同一时间进行预订时,就会出现问题。

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

系列代码 500 似乎不正确,因为引发的异常是由业务逻辑引起的。

另一方面,400 口家庭的州法规似乎也不合适,因为该要求制定得很好

谢谢!

Joh*_*car 10

我自己正在研究这个问题,jonrsharpe 的 409 冲突建议是最合适的。

https://www.rfc-editor.org/rfc/rfc7231#section-6.5.8

409(冲突)状态代码表示由于与目标资源的当前状态发生冲突,请求无法完成。此代码用于用户可能能够解决冲突并重新提交请求的情况。服务器应该生成一个有效负载,其中包含足够的信息,以便用户识别冲突的来源。

在响应 PUT 请求时最有可能发生冲突。例如,如果正在使用版本控制,并且 PUT 的表示包含对资源的更改,这些更改与早期(第三方)请求所做的更改相冲突,则源服务器可能会使用 409 响应来指示它无法完成要求。在这种情况下,响应表示可能包含对于基于修订历史合并差异有用的信息。