我正在研究Spring如何处理REST Web服务(但我不知道它是否与Spring相关,或者更一般地说它只与REST概念相关)。
所以我的疑问是:成功的DELETE语句的HTTP状态返回代码究竟是什么?
是 204 还是 200 ?
我知道 200 表示我的请求已正确完成但在线阅读在我看来,我希望在成功获取GET内容之后 而不是之后删除。
某处我发现 204 状态是之后获得的 成功PUT或DELETE 。这是真的吗?我无法理解,这意味着响应为空,为什么空响应意味着PUT或DELETE操作已成功完成?
答案 0 :(得分:45)
对于每种方法,哪种HTTP状态代码是正确的,没有严格的规则。这取决于究竟发生了什么,需要向客户发送什么信息等等。我可以想到几个例子:
成功DELETE
,没有进一步的信息。 204 No Content
成功DELETE
,但您有关于应删除的相关孤立资源的警告。 200 OK
。
您接受了DELETE
请求,但可能需要很长时间,而且您将异步执行此操作。客户应该稍后检查。 202 Accepted
。
您已接受DELETE
请求,但无法移除资源,而是将URI重置为默认值。 205 Reset Content
。
答案 1 :(得分:5)
空响应正文并不意味着删除成功,成功删除(通常)意味着响应正文为空。
RESTful API没有官方状态代码列表,但大多数人都认为204是成功删除的良好响应代码,因为删除内容后通常没有理由返回响应主体。
通常,如果操作成功且响应主体为空,则返回204.如果操作是成功且响应主体不为空,则返回200
答案 2 :(得分:3)
空响应不表示操作成功,HTTP错误代码应表示成功/失败,响应正文可能包含数据,也可能不包含数据。
响应主体可以包含关于请求的附加信息,例如,要显示给UI的特定消息,关于信息的统计信息或定时信息等等。但它并没有 ,并且身体的目的是信息/诊断(如果存在)。
答案 3 :(得分:1)
2xx表示请求成功。 xx只允许您更具体地了解发生的事情(服务器执行或返回的内容)。