如果用户未提供有效输入以及电子邮件地址不可用,相应的状态代码是什么?

What is the appropriate status code if the user has not provided valid input, as well as an e-mail address that is not available?

根据一些问答,对于用户名太短,不符合给定要求等情况,合适的代码是422,尽管还有很多推荐 400

根据其他帖子,当电子邮件地址正在使用时,建议的状态代码是 409

如果输入的用户名太长且电子邮件地址不可用,我应该return选择哪一个?两者在技术上都不正确吗?哪一个应该是主导的?

HTTP 状态代码属于 [通过网络传输文档] 域。它们的存在是为了与通用 HTTP 组件传达所提供响应的性质——有效负载是请求资源的表示,还是错误的表示?什么语义适用于 HTTP headers?此响应是否应使先前缓存的响应无效?等等。

在 Web 上下文中考虑它可能会有所帮助,其中人类用户的信息在 HTML 文档中,但状态代码和 headers 由 浏览器.

400, 403, 409, 422都是合理的选择。由于“修复冲突并重试”对于不满足服务器期望的架构约束的有效负载不会成功,因此我会避开 409。同样,尝试使用不同的凭据集没有帮助,所以 403 也不是一个完美的选择。

我可能会使用 422,因为它将人们的注意力引导到请求负载上。