部分成功请求的 HTTP 状态代码

标签 http rest http-status-codes

我有一个向用户发送消息的应用程序。在 post 请求中,传输的 XML 字符串包含应接收该特定消息的所有用户。如果列表中的任何用户不存在,我会将缺失用户的列表返回给客户以供进一步评估。

现在我在问自己,表示请求已被接受但有些事情无法完成的应用程序的正确状态代码是什么。

如果不允许在列表中包含缺失的用户,则可以避免该问题。然后发送尝试只会得到一个 4xx 错误。但是以这种方式构建 API 没有意义。 另一方面,我可以认为错误条件纯粹是特定于应用程序的。但是发送 200 感觉不对。最好给客户提示何时深入查看错误响应。例如避免一遍又一遍地向该用户发送消息

最佳答案

我处理过一个非常相似的问题。在这种情况下,我返回了一个

207 多状态

现在,这不是严格的 HTTP,它是 WebDAV 扩展的一部分,所以如果您也无法控制客户端,那么这对您不利。如果这样做,您可以这样做:

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D='DAV:'>
     <D:response>
       <D:user>user-123</D:user>
       <D:status>success</D:status>
     </D:response>
     <D:response>
       <D:user>user-789</D:user>
       <D:status>failure</D:status>
     </D:response>
   </D:multistatus>

但同样,这是一个 HTTP 扩展,您还需要控制客户端。

关于部分成功请求的 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472935/

相关文章:

Python HTTPServer 异常导致它失败

rest - 在 Ubuntu/Centos 上部署并运行 Go API 服务器

google-apps-script - 在 Google Apps 脚本中,如何为我实现的服务设置 HTTP 响应代码?

http - http响应状态码402和403的区别

.htaccess - 使用 .htaccess 在两个页面上强制使用 http

http - 这个 goroutine 是如何失败的?

rest - 计算 REST API 的 ETag

java - 如何制作帖子正文请求中所需的输入属性?

HTTP 状态代码 : differentiating between being over capacity and being down for maintenance

ruby - Timeout::Error 不是在 Ruby 中拯救