对于失败的 POST 请求使用什么 HTTP 响应代码?

2024-03-26

当 POST 请求不成功且请求正文格式正确时,应返回什么 HTTP 响应代码?

对于成功的 POST 请求,我使用 201 - Created,但没有等效的未创建代码。

我认为要么 400 - 错误的请求,但这实际上会向用户表明请求格式不正确,或者 304 - 未修改。


当出现以下情况时应返回什么 HTTP 响应代码POST请求未成功且请求正文格式正确?

如果您的意思是请求负载的语法有效,但由于数据无效而无法处理,您可以使用422 https://www.rfc-editor.org/rfc/rfc4918#section-11.2:

11.2. 422 无法处理的实体 https://www.rfc-editor.org/rfc/rfc4918#section-11.2

The 422(无法处理的实体)状态代码表示服务器 了解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且 请求实体的语法是正确的(因此400(错误的请求) 状态代码不合适)但无法处理包含的内容 指示。例如,如果 XML 请求正文包含格式正确的(即语法正确的),但是 语义错误的 XML 指令。

请记住在响应有效负载中提供良好的描述,解释有效负载的问题。请参阅RFC 7807 https://www.rfc-editor.org/rfc/rfc7807有关如何报告 HTTP API 中的问题的详细信息。


更新(根据评论)

原因是一个POST例如,请求失败更多的是业务逻辑错误“账户余额太低,无法提取 5.00 美元”.

对于您所描述的情况comment https://stackoverflow.com/questions/47269601/what-http-response-code-to-use-for-failed-post-request/47269747?noredirect=1#comment87675949_47269747, 403 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3 or 409 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.8会更合适。

6.5.3. 403 禁忌 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3

The 403(禁止)状态码表示服务器理解 请求但拒绝授权。一个服务器希望 公开请求被禁止的原因可以描述 响应负载中的原因(如果有)。 [...]

6.5.8。 409 冲突 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.8

The 409(冲突)状态码表示请求无法 由于与目标的当前状态冲突而无法完成 资源。此代码用于用户可能会遇到的情况 能够解决冲突并重新提交请求。服务器 应生成包含足够用户信息的有效负载 认识冲突的根源。 [...]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于失败的 POST 请求使用什么 HTTP 响应代码? 的相关文章

  • 在获得响应之前发出多个请求

    当并行发送多个请求时 在获得响应之前 我无法理解 HTTP 的工作原理 有两种情况 1 With Connection Keep Alive 根据HTTP规范 http www w3 org Protocols rfc2616 rfc261
  • 处理原始 HTTP 请求内容

    我正在 ASP NET 中做一个电子商务解决方案 它使用PayPal 网站支付标准 https www paypal com IntegrationCenter ic standard home html服务 除此之外 我还使用他们提供的服
  • Http Auth 不适用于 PHP

    我使用 Laravel Lumen Shield 扩展进行 Http 身份验证 但是在我的本地计算机上一切都很完美 我只在我们的服务器上遇到了问题 问题是在我提交正确的登录数据后 登录屏幕再次出现 我尝试了不同的登录数据 不同的浏览器 登录
  • 您可以在分块的 http 响应预告片中设置 Location 标头吗?

    HTTP 1 1 响应可以分块 spec https www rfc editor org rfc rfc2616 section 3 6 1 在最后一个块的末尾 服务器可以发送一个 预告片 其中包含附加标头 问题是 你能包括一个Locat
  • 无法在服务器端 NodeJS 启用 CORS

    我无法启用CORS在服务器端 我的前端和后端服务器有不同的端口 服务器端的实现方式如下 http createServer function req res Here you can create your data response in
  • 使用矩阵参数创建 GET 请求

    我将使用的网络服务需要矩阵参数 http tester com v1 customers lastname Jackson firstname Tim bookingreference 7Y9UIY 而不是通常的 http tester c
  • 尝试将过滤器添加到 Grizzly+Jersey 应用程序时出现问题

    我有这个服务器初始化类 package magic app main import org glassfish grizzly http server HttpServer import org glassfish jersey grizz
  • 如何从 Kubernetes 服务背后的 HTTP 请求读取客户端 IP 地址?

    我的 Web 应用程序作为 Kubernetes pod 在 SSL 的 nginx 反向代理后面运行 代理和我的应用程序都使用 Kubernetes 服务进行负载平衡 如所述here http blog kubernetes io 201
  • HTTP 查询字符串和 []

    PHP 使用 在查询参数名称中 以确保多次出现的参数都出现在 GET超全局变量 否则只出现最后一次出现的情况 还有其他软件可以做到这一点吗 但从RFC 3986 https www rfc editor org rfc rfc3986 以及
  • 内容长度标头与分块编码

    我正在尝试权衡设置的利弊Content LengthHTTP 标头与使用分块编码从我的服务器返回 可能 大文件的比较 使用持久连接需要其中之一来符合 HTTP 1 1 规范 我看到了的优点Content Length标头是 下载对话框可以显
  • 从开放的 HTTP 流中读取数据

    我正在尝试使用 NET WebRequest WebResponse 类来访问 Twitter 流 API 此处 http stream twitter com spritzer json 我需要能够打开连接并从打开的连接中增量读取数据 目
  • 反向代理受 NTLM 保护的网站

    如何将请求代理到受 NTLM 保护的网站 例如团队基金会 and 共享点 我不断得到401 身份验证错误 根据这篇 Microsoft TechNet 文章 https www microsoft com technet prodtechn
  • PHP 是否有与 Java 的 RequestDispatcher.forward 等效的功能?

    在 Java 中我可以编写一个非常基本的 JSPindex jsp像这样 这样做的效果是用户请求index jsp 或者只是包含目录 假设index jsp是目录的默认文档 将会看到home action没有浏览器重定向 即 forward
  • HATEOAS 与 PUT/POST 链接

    代表 HATEOAS 链接的最佳方式是什么POST PUT PATCH在资源上 这些操作具有有效负载 但我们无法选择在 HATEOAS 链接中表示有效负载 因为它们不是预先确定的并且可能很重 那么仅仅指定终点并指定操作就足够了吗 对于 HA
  • 为什么使用 HTTP 动词?

    因为动词的目标是像 server domain getallrecords 或 server domain delete1record 或类似的 URL 而getallrecords delete1record都是专门为特定目的而设计的 为
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • 为什么使用HTTP协议时需要指定端口号?

    即使我们使用HTTP协议 为什么还需要用IP地址指定端口号 例如 http xyz 8080 这到底是什么意思 我们已经知道 在使用 HTTP 时 请求将在端口 80 上提供服务 那么为什么我们要显式指定端口呢 HTTP 的默认端口为 80
  • 服务器返回网页 404,但页面在浏览器中显示正常 - 为什么?

    一个奇怪的网页横亘在我面前 作为一名开发人员 我必须解开这个谜团 在任何浏览器中访问网页时 一切似乎都很正常 网页按预期显示 但是当查看控制台时 服务器实际上返回了 404 状态代码 那么浏览器为什么要渲染页面呢 查看正文显示返回了有效的
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • iOS 上的多个 HTTP 请求与单个 TCP 连接

    我正在开发一个 iPhone 应用程序 它使用我控制的基于 Web 的 API 连接到持续打开的 TCP 端口并通过 TCP API 发出请求 或者为我想要获取的所有数据发出新的 HTTP 请求 会更快或更高效吗 我认为差异可以忽略不计 但

随机推荐