很明显,某些表单 POST 请求应该会导致 4xx HTTP 错误(例如错误的 URL、缺少预期的字段、无法发送 auth cookie),但是像这样的现有问题似乎表明所有无效的表单提交都应该被视为 4xx HTTP错误。真的吗?
错误输入密码或意外遗漏必填字段是应用程序中极为常见和预期的情况。从任何规范中似乎都不清楚这些应该构成“HTTP 客户端错误”,或者如果 POST 产生永久状态更改,则只能认为 2xx 成功。
我想我的直觉是,如果服务器向客户端发送一个表单,并且客户端立即使用格式正确的 POST 请求回复该表单并包含所有预期字段,那么常见的业务逻辑违规不应该是 HTTP 错误。
如果通过 JSON-RPC 之类的方式提交表单,则情况就更不明确了。HTTP 只是传输机制,如果函数被成功调用并且响应返回给调用者,应该没有 HTTP 错误。
更罕见的是,某些形式可能会做多种事情,其中一部分可能会成功,而另一部分可能会失败。
理想情况下,IETF 会使用 RFC 来解决这个问题,可能会添加一个 HTTP 错误代码来表示“由于表单失效失败而没有执行操作”,或者扩展422的定义以涵盖这一点。