2017-09-02 85 views
1

我已经浏览了HTTP/1.1协议规范RFC-2616,我想了解在调用特定REST方法时应该返回哪个状态码。据我所研究的协议(链接),我试图解析REST方法,以正确的状态代码:REST:根据RFC 2616 HTTP/1.1规范的正确响应状态?

  • GET
    • 到的情况下,返回200 (ok)至少一个资源被发现。
    • 我应该返回204(找不到)如果找不到任何东西(即返回空列表)?
  • PUT
  • POST
    • 与如果新reource已被添加到基于共同recommendation的生产地
    • 返回201 (created)的差相同的像PUT方法,POST前人的精力用于创建一个新的资源,PUT修改现有的。如果我决定遵循这一建议,那么在尝试修改现有资源前,我应该返回什么? POST api/v1/person/1
  • PATCH
    • 与差异同样喜欢PUT方法就像放的做法,但itmodifies资源不更换整个资源部分
    • 没有关于在W3 PATCH REST方法字协议RFC-2616,应该像PUT一样对待它吗?
  • DELETE
    • 返回200 (ok)如果资源被删除,[204(未找到)]的情况下,没有现有的除去资源(ID未找到)。在REST实施的情况下是否复制GET响应principe?

是我的“表”正确的(特别是带引号?报表?是正确的,只有GET应返回在体内的请求本身和方法的其余部分只是一个URI链接到经修正包含在标题中的资源(新增,修改..)

我的理解是否正确,确实存在另一个描述REST方法的官方正式推荐(或者我们“有义务”)遵循的源码吗?我很困惑广泛的来源给了我对这种真正冗长的RFC-2616协议的每种方法有一些不同的答案。

最好的办法是存在一个表格,简要清楚地描述所有这5种可能的返回状态,正文内容和标题的方法。

+0

尝试将状态码与方法对齐可能不是一个有用的想法。 – VoiceOfUnreason

+0

https://www.iana.org/assignments/http-methods/http-methods.xhtml包含方法定义的链接。 –

回答

4

RFC 7230

这HTTP/1.1规范淘汰了RFC 2616

因此,任何试图制定出模式的状态码应该从那里

开始是我的“表“正确

不是真的;看看Kropat的(非官方)流程图Stop Making it Hard

+0

也许值得注意的是:鉴于当前的HTTP/1.1规范被模块化为多个部分,RFC 7231“语义和内容”https://tools.ietf.org/html/rfc7231也废弃了RFC 2616,并且是特定的部分,其中现在定义了状态代码的语义 – sideshowbarker