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

Nik*_*las 2 rest http rfc http-status-codes http-1.1

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

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

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

我的理解是否正确,是否存在另一个正式描述REST方法的来源,建议(或者我们"有义务")遵循这些来源?我对各种各样的来源非常困惑,这给了我对每个方法以及这个非常详细的RFC-2616协议的不同答案.

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

Voi*_*son 5

来自RFC 7230

此HTTP/1.1规范废弃了RFC 2616

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

我的"桌子"是否正确

并不是的; 看看Kropat的(非官方)流程图在Stop Make it Hard中.