繁体   English   中英

REST API设计查询2

[英]REST API Design Query 2

应该张贴只有一个资源的操作支持创建在同一时间也可以在一个单一的POST请求接受创作资源的集合?

根据RFC2616中POST定义 ,可以推断出仅应创建一个资源(如RFC中所定义)。 首先,本节在整个段落中讨论“ 创建的实体 ”(单数)。 最明显的部分是通过POST创建新资源时的建议响应:

如果在原始服务器上创建了资源,则响应
应该为201(创建),并包含描述
请求的状态并引用新资源以及一个位置
标头(请参见第14.30节)。

据我所知,您只能在location标头中返回一个位置。

前面提到的RFC2616已过时(感谢@Eric Stein)。 POST更新语义可以在RFC7231中找到 再次,建议的响应暗示了语义:

如果已在原始服务器上将一个或多个资源创建为
成功处理POST请求的结果,原始服务器
应该发送包含Location标头的201(已创建)响应
为创建的主要资源提供标识符的字段
第7.1.2节 )以及描述状态的表示。
请求,同时引用新资源。

当POST可以创建多个资源时,它应该只创建一个根资源(或者,至少,这是措辞所暗示的)。

总体而言,关于什么是什么以及什么是不允许的,几乎没有硬性限制,因此RFC的措辞(SHOULD,MAY等)。 只要您在相应的RFC中看不到MUST或MUST NOT,就可以随意进行操作,但是可能会违反最佳做法。

POST旨在作为一个包罗万象的动词,允许服务器执行任何操作。 尽管它最常用于创建单个资源,但它在规范内肯定可以创建任意数量的资源。 在更新的RFC 7231中对此进行了澄清:

如果由于成功处理POST请求而在原始服务器上创建了一个或多个资源,则原始服务器应发送201(已创建)响应,该响应包含一个Location头字段,该字段为创建的主要资源提供标识符( 第7.1节) .2 )以及在引用新资源时描述请求状态的表示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM