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

标签 api http rest 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.

而且我会说从语法/http POV 来看缺少字段是可以的,它是特定于应用程序域的语义要求。

200 OK 有解释是不好的,500 感觉很奇怪,因为这是请求问题。

想法?

最佳答案

400 是正确的响应。

400 从 HTTP 的角度来看并不局限于格式错误的语法。缺少强制参数是应用程序定义的语法错误,因此是“错误请求”

编辑

乍一看,没有单独的返回码似乎很奇怪,但返回码旨在区分客户端应采取的操作。 400 错误代码表示客户端应将 POST 数据或查询字符串更改为应用程序定义的格式。因此它适用于这种情况。

关于api - 没有必填字段的请求的正确 HTTP 响应代码是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077871/

相关文章:

python - 将深度嵌套的 JSON 响应从 API 调用转换为 pandas 数据帧

Android SDK 推特客户端

ruby-on-rails - 带有自定义 header 的 Ruby 中的 HTTP.post_form

java - Camel 休息。可以在 DELETE 上接收正文,但无法发送它

c# - 将 Signal R 整合到现有的 Web 应用程序中

java - 通过REST API获取数据时如何处理实体关系?

c++ - 使用 C++ Python API 逐行执行 python 脚本

python - CreateRestrictedToken - SidsToDisable

Python QT QNetworkRequest 以 "(process:3265): GLib-ERROR **: Creating pipes for GWakeup: Too many open files"退出

http - 休息 API : HTTP Status code for auth violation