什么REST PUT / POST / DELETE调用应该按照惯例返回?

  1. 根据“REST思想”,PUT / POST / DELETE请求的响应正文中应该包含哪些内容?

  2. 那么返回码呢? HTTP_OK足够了吗?

  3. 这样的约定是什么原因呢?

我find了一个很好的post来描述POST / PUT的区别: POST vs PUT但是它仍然不能回答我的问题。

原谅轻浮,但是如果你通过HTTP进行REST,那么RFC7231就准确地描述了GET,PUT,POST和DELETE的期望行为。

总的来说,这些惯例是“认为你只是提供网页”。

对于PUT,如果您之后立即执行了GET,我会返回相同的视图; 那会导致200(当然,假设渲染成功)。 对于一个POST,我会做一个redirect到创build的资源(假设你正在做一个创build操作;否则,只是返回结果); 创build成功的代码是201,这实际上是不在300范围内的redirect的唯一HTTP代码。

我从来没有为DELETE应该返回而感到高兴(在这种情况下,我的代码当前产生了一个HTTP 204和一个空的主体)。

创build资源通常映射到POST,并且应该返回新资源的位置; 例如,在Rails脚手架中,CREATE将redirect到新创build的资源的SHOW。 同样的方法对于更新(PUT)也许是有意义的,但这不是一个惯例; 更新只需指示成功。 删除可能只需要表示成功; 如果你想redirect,返回资源列表可能是最有意义的。

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

我上面说的唯一的硬性规则是CREATE应该返回新资源的位置。 这对我来说似乎是一件容易的事。 客户需要能够访问新项目是非常有意义的。