如果客户端请求由于某些业务逻辑而无法完成,服务器应该返回什么 HTTP 状态代码?

mls*_*lst 4 api rest http

我有一个在浏览器中工作并使用 REST API 后端的聊天应用程序。它具有以下业务逻辑规则:

  1. 用户可以与任何其他用户开始聊天会话

  2. 一个用户一次只能在一个聊天会话中

  3. 如果userA并且userB已经开始聊天会话并且该会话当前处于活动状态,那么如果userC尝试与任一服务器userAuserB服务器开始聊天会话应该阻止这种情况并将某种错误返回给userC

我的问题是userC应该收到的此错误的适当 HTTP 状态代码是什么?

这不是客户端的错,因此 4xx 代码似乎不合适。

这不是服务器错误,因此 5xx 代码似乎也不合适。

我将发送带有附加 JSON 信息消息的响应正文,说明为什么请求失败,但是满足 RESTful 原则的适当 HTTP 状态代码是什么?

Eve*_*ert 6

409这里听起来最合适。409通常用于请求在其他方面有效但由于服务器/某些其他资源的当前状态而无法满足的情况。如果“其他状态”发生变化,则请求可能再次有效。

409 Conflict在这里写了更多:https : //evertpot.com/http/409-confict