【问题标题】:What is the HTTP status return code for a successful DELETE statement in REST?REST 中成功的 DELETE 语句的 HTTP 状态返回码是什么?
【发布时间】:2015-06-15 06:04:59
【问题描述】:

我正在研究如何使用 Spring 处理 REST Web 服务(但我不知道它是否是与 Spring 相关的答案,或者更笼统地说它仅与 REST 概念有关)。

所以我的疑问是:成功的 DELETE 语句的 HTTP 状态返回码到底是什么?

204 还是 200

我知道 200 表示我的请求已正确满足,但在网上阅读时,在我看来,我希望 在成功 GET 返回内容之后而不是之后删除。

某处我发现204状态是在之后获得的 成功的 PUT 或 DELETE。这是真的吗?看不懂,就是说response是空的,为什么一个空respons就代表PUT或者DELETE操作已经成功了?

【问题讨论】:

标签: java spring web-services rest spring-mvc


【解决方案1】:

一个空的响应体并不意味着删除成功,一个成功的删除(通常)意味着响应体是空的。

没有官方的 RESTful API 状态代码列表,但大多数人认为 204 是成功删除的良好响应代码,因为通常没有充分的理由在删除某些内容后返回响应正文。

一般来说,如果操作成功并且响应体为空返回204。如果操作成功并且响应体不为空,则返回200

【讨论】:

  • (迂腐,也许,但我不得不不同意第一句话。)
【解决方案2】:

空响应表示操作成功,HTTP 错误代码应该指示成功/失败,响应正文可能包含也可能不包含数据。

响应正文可能包含有关请求的附加信息,例如,要显示到 UI 的特定消息、有关信息的统计信息或时间信息等。但它必须这样做,并且身体的目的是提供信息/诊断(如果存在)。

【讨论】:

    【解决方案3】:

    2xx 代表请求成功。 xx 只是让您更具体地了解发生了什么(服务器做了什么或正在返回什么)。

    【讨论】:

      【解决方案4】:

      对于每种方法的正确 HTTP 状态码没有严格的规定。这取决于具体发生了什么,需要向客户发送什么信息等。我可以想到几个例子:

      • 一个成功的DELETE,没有更多信息。 204 No Content

      • 一个成功的DELETE,但是你有一个关于应该删除的相关孤立资源的警告。 200 OK.

      • 您接受了DELETE 请求,但可能需要很长时间,并且您将异步执行此操作。客户应稍后检查。 202 Accepted.

      • 您接受了 DELETE 请求,但无法删除资源,而是将 URI 重置为默认值。 205 Reset Content.

      【讨论】:

      • 此外,如果您的响应数据使用错误代码 200 或 202 为空,则在 javascript 中“then”将不会接受您的响应已完成。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2021-06-10
      • 2013-02-15
      • 2018-10-05
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多