【问题标题】:What is the HTTP response code for failed HTTP Delete operation?HTTP 删除操作失败的 HTTP 响应代码是什么?
【发布时间】:2013-07-26 21:46:40
【问题描述】:

我有一个 uri /api/books/122 的资源,如果在客户端为此资源发送 HTTP Delete 时该资源不存在,那么此操作的相应响应代码是什么?是 404 未找到吗?
谢谢

【问题讨论】:

  • 也许从这里挑选合适的? w3.org/Protocols/HTTP/HTRESP.html
  • 我觉得这个流程图很有启发性:i.stack.imgur.com/whhD1.png
  • @huwr 这个地方有可编辑的来源吗?另外 - 我认为底部中心有错误我错了吗? = Yes -> = Yes -> 204 No Content (??) 看起来是/否路径在那里交换了?

标签: http rest


【解决方案1】:

删除调用的响应代码可以是以下任何一种:

  • DELETE /api/book/122 - 服务器成功处理了请求,但没有返回任何内容
    • 204 No Content
  • DELETE /api/book/122 - 资源不存在
    • 404 Not Found
  • DELETE /api/book/122 - 资源已删除
    • 410 Gone
  • DELETE /api/book/122 - 用户没有权限

    • 403 Forbidden
  • DELETE /api/book/122 - 不允许的方法

    • 405 Method Not Allowed
  • DELETE /api/book/122 - 冲突(用户可以解决冲突并删除)

    • 409 Conflict

在你的情况下 404 是合适的。

【讨论】:

  • 你能分享这方面的参考资料吗?
  • 关于DeleteUpdateURI 并假设资源不再存在的情况,我认为应该是410 (Gone )。但是考虑一下如果资源从一开始或以前从未存在过的情况,404 更有意义。
  • 谢谢。如果假设资源存在但由于某些子数据、其他引用或任何阻止它被删除的条件而无法删除,那么合适的响应代码是什么?在这种情况下,请求 URL 在技术上是正确的,如果满足其他先决条件,用户将有权这样做。
  • 我不同意在这种情况下返回 204。正如标准所说(w3.org/Protocols/rfc2616/rfc2616-sec10.html),204 不应更改客户端视图。但是,如果您删除这本书,这将导致重新加载一个视图,其中包含一个没有删除的书的新书列表。
  • @FishingIsLife 请bury RFC 2616。它很久以前就被 RFC 7230-7235 取代了。 IE。 RFC 7231 明确列出了成功的 DELETE 请求应返回的可接受状态代码。请求本身也只是删除与资源链接的关联的请求,但也不一定会导致资源删除。我经常会,但不一定非要。语义上有细微差别
【解决方案2】:

是的,应该是 404。

一般来说,如果请求以某种方式出错,则会出现 400 系列错误,如果服务器出现问题,则会出现 500 系列错误。

【讨论】:

    【解决方案3】:

    我建议看一下这个流程图。它显然比你需要的多一点,但对未来的读者来说是一个很好的资源。遗憾的是没有可能的摘录。

    http-decision-diagram

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多