没有必填字段的请求的正确HTTP响应代码是什么

Alm*_*mad 20 api rest http http-status-codes

考虑用户正在删除帖子的简单情况.这是一个简单的HTTP DELETE/POST请求,其中包含一个必填字段post_id.

如果没有提供post_id,服务器应该怎么做?

显然,用户永远不应该遇到这种行为,所以让我们是纯粹的.

我的第一次采取将是400个不良请求,但规范说

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
Run Code Online (Sandbox Code Playgroud)

我会说从字段/ http POV中删除字段是可以的,它是应用程序域特定的语义要求.

200 OK说明不好,500觉得很奇怪,因为这是请求问题.

几点思考?

Tom*_*mas 33

400是正确的答案.

从HTTP的角度来看,400不限于格式错误的语法.缺少必需参数是应用程序定义的语法中的错误,因此是"错误请求"

编辑

起初看起来很奇怪,没有单独的返回代码,但返回代码旨在区分客户端应采取的操作.400错误代码意味着客户端应将POST数据或查询字符串更改为应用程序定义的格式.因此适合这种情况.