Dan*_*llo 1946
对于PUT请求:HTTP 200或HTTP 204应该意味着"资源更新成功".
对于DELETE请求:HTTP 200或HTTP 204应表示"资源已成功删除".还可以返回HTTP 202,这意味着服务器接受该指令并且"资源被标记为删除".
9.6 PUT
如果修改了现有资源,则应该发送200(OK)或204(No Content)响应代码>以指示请求成功完成.
9.7删除
如果响应包括描述状态的实体,则成功响应应为200(OK),如果操作尚未执行,则应为202(已接受);如果操作已颁布但响应不包括,则应为204(无内容)一个实体.
HTTP 200 OK:成功HTTP请求的标准响应.实际响应取决于使用的请求方法.
HTTP 204 No Content:服务器成功处理了请求,但未返回任何内容
Яeg*_*ght 820
简短回答:对于PUT和DELETE,您应该发送200(OK)或204(No Content).
答案很长:这是一个完整的决策图(点击放大).
资料来源:https://github.com/for-GET/http-decision-diagram
Alf*_*nda 138
以下是一些提示:
删除
200(如果您想在响应中发送一些额外的数据)或204(推荐).
202已删除的操作尚未提交.
如果没有要删除的内容,请使用204 或 404(DELETE操作是幂等的,删除已删除的项目操作成功,因此您可以返回204,但是幂等并不一定意味着相同的响应)
其他错误:
- 400 Bad Request(格式错误的语法或错误的查询很奇怪,但可能).
- 401 未授权的身份验证失败
- 403 禁止访问:授权失败或应用程序ID无效.
- 405 不允许.当然.
- 409 在复杂系统中可以实现资源冲突.
- 而501,502在错误的情况下.
放
如果您要更新集合的元素
- 200/204与上述DELETE相同的原因.
- 202如果尚未提交操作.
引用的元素不存在:
- PUT可以是201(如果你创建了元素,因为这是你的行为)
404如果您不想通过PUT创建元素.
400 Bad Request(格式错误的语法或错误的查询比DELETE的情况更常见).
- 401 未经授权
- 403 Forbidden:身份验证失败或应用程序ID无效.
- 405 不允许.当然.
- 409 在复杂系统中可以实现资源冲突,如DELETE中那样.
- 422 不可处理的实体它有助于区分"错误请求"(例如格式错误的XML/JSON)和无效字段值
- 而501,502在错误的情况下.
这是一些状态代码,你应该知道你的知识。
- 100 继续
- 101 交换协议
- 102 处理
- 103 早期提示
- 200 正常
- 201 创建
- 202 接受
- 203 非权威信息
- 204 无内容
- 205 重置内容
- 206 部分内容
- 207 多状态
- 208 已举报
- 226 IM使用
- 300 多项选择
- 301 永久搬家
- 302 发现
- 303 看其他
- 304 未修改
- 305 使用代理
- 306 切换代理
- 307 临时重定向
- 308 永久重定向
- 400 错误请求
- 401 未授权
- 402 需要付款
- 403 禁地
- 404 未找到
- 405 方法不允许
- 406 不可接受
- 407 需要 代理认证
- 408 请求超时
- 409 冲突
- 410 飘
- 411 所需长度
- 412 前置条件失败
- 413 负载过大
- 414 URI太长
- 415 不支持的媒体类型
- 416 范围不满足
- 第417章 期待落空
- 第418章 我是茶壶
- 420 方法失败
- 421 错误的 请求
- 422 无法处理的实体
- 423 锁定
- 424 依赖失败
- 426 需要升级
- 428 需要先决条件
- 429 请求过多
- 431 请求头字段太大
- 451 因 法律原因不可用
- 500 内部服务器错误
- 501 未实施
- 502 坏网关
- 503 服务不可用
- 504 网关超时
- 505 不支持 Http 版本
- 506 变种 也商量
- 507 存储空间不足
- 508 检测到环路
- 510 未扩展
- 511 需要 网络认证
由于问题深入研究DELETE "应该"返回200 vs 204,因此有些人建议返回一个带链接的实体,因此首选项为200.
"而不是返回204(无内容),API应该是有用的,并建议去的地方.在这个例子中,我认为提供的一个明显的链接是" 'somewhere.com/container/'(减去'资源') " -客户端刚从中删除资源的容器.也许客户希望删除更多资源,这将是一个有用的链接."
http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/
如果客户端遇到204响应,它可以放弃,转到API的入口点,或者返回到它访问的先前资源.这两种选择都不是特别好.
我个人不会说204错了(作者也没有;他说"讨厌")因为客户端的良好缓存有很多好处.最好的方法是保持一致.