REST:根据RFC 2616 HTTP / 1.1规范正确响应状态?

时间:2017-09-02 17:23:46

标签: rest http http-status-codes rfc http-1.1

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

  • GET
    • 如果找到至少一个资源,则返回200 (ok)
    • 如果找不到任何内容(即返回空列表),我应该返回 204(未找到)吗?
  • PUT
  • POST
    • 与PUT方法相同,如果新的资源已添加到orign
    • ,则返回201 (created)的差异
    • 基于公共recommendation,POST可用于创建新的资源,PUT用于修改现有资源。如果我决定遵循这个建议,那么在尝试修改现有资源时我应该返回什么。 POST api/v1/person/1
  • PATCH
    • 和PUT方法一样,差异并不像PUT那样取代整个资源,但是它部分地修改了资源
    • 在W3协议RFC-2616中没有关于PATCH REST方法的说法,是否应该像PUT那样对待它?
  • DELETE
      如果资源已被删除,则
    • 返回200 (ok);如果没有要删除的资源(未找到ID),则返回[204(未找到)]。在REST实施的情况下,它是否复制了GET响应原则?

我的“表”是否正确(特别是带引号?的语句?是正确的,只有GET应该在正文中返回请求本身,其余方法只是一个URI链接到修改后的资源(新添加,修改..)包含在标题中?

我的理解是否正确并确实存在另一个正式描述REST方法的来源,建议(或我们“有义务”)遵循这些来源?我对各种各样的消息来源感到很困惑,这给每个方法提供了不同的答案以及这个非常详细的RFC-2616协议。

最好的是存在一个表格,简要而清楚地描述了所有这五种方法,其中包括返回状态,正文内容和标题的可能性。

1 个答案:

答案 0 :(得分:5)

来自RFC 7230

  

此HTTP / 1.1规范废弃了RFC 2616

因此,任何计算状态代码模式的尝试都应该从那里开始

  

是我的"表"正确

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