首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据约定,REST PUT/POST/DELETE调用应该返回什么?

根据约定,REST PUT/POST/DELETE调用应该返回什么?
EN

Stack Overflow用户
提问于 2010-11-24 23:52:32
回答 5查看 126.2K关注 0票数 159
  1. 根据"REST思想“,PUT/POST/DELETE请求的响应体应该是什么?
  2. 返回代码呢?HTTP_OK足够了吗?
  3. 如果有这样的约定,原因是什么?

我找到了一个描述POST/PUT差异的好帖子:POST vs PUT,但它仍然没有回答我的问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-25 00:18:48

请原谅我的轻率,但是如果你在HTTP上做REST,那么RFC7231准确地描述了GET,PUT,POST和DELETE的行为。

更新(2014年7月3日):

HTTP规范有意没有定义从POST或DELETE返回的内容。规范只定义了需要定义的内容。剩下的留给实现者来选择。

票数 134
EN

Stack Overflow用户

发布于 2010-11-25 00:01:02

总体而言,约定是“就像你只是在传递网页一样思考”。

对于PUT,我返回的视图与在get之后立即返回的视图相同;这将导致200 (当然,假设渲染成功)。对于POST,我会重定向到创建的资源(假设您正在执行创建操作;如果不是,只返回结果);成功创建的代码是201,这实际上是唯一不在300范围内的重定向HTTP代码。

对于DELETE应该返回什么,我从来都不满意(在这种情况下,我的代码当前生成一个HTTP204和一个空的正文)。

票数 25
EN

Stack Overflow用户

发布于 2010-11-25 00:02:22

创建资源通常映射到POST,这应该返回新资源的位置;例如,在Rails scaffold中,CREATE将重定向到新创建的资源的SHOW。同样的方法对于更新(PUT)可能是有意义的,但这不是一种约定;更新只需要表明成功。delete可能也只需要指示成功;如果您想要重定向,返回资源列表可能是最有意义的。

成功可以通过HTTP_OK来表示,是的。

我在上面说过的唯一一条硬性规则是,创建应该返回新资源的位置。对我来说,这似乎是不费吹灰之力的;客户端将需要能够访问新项目,这是非常有意义的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4268707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档