Location头可以用于201 Created响应中的多个资源位置吗?

Reb*_*cca 12 rest http

接受批量PUT创建然后返回多个位置的正确动词和响应是什么?Location标头仅显示支持单个Uri.

我原本假设我可以使用PUT进行批量创建并返回带有Uris列表的字符串数组,但是在查看规范时,似乎不支持,但它也不完全清楚.

是否允许多个位置标题作为替代?

有什么建议?

Jul*_*hke 10

不,您只能有一个Location头字段(是的,从规范中可以清楚地看到).

话虽这么说,PUT用于创建/更新单个资源.看来你正在使用它的东西不是为......而设计的......

  • 是的,但问题仍然存在:在批量创建情况下,如何返回所有单个资源位置?一个冗长的方法:将这些资源位置编译到他们自己的资源*并返回一个到*那*的URL,但就像我说的那样,它有点啰嗦. (2认同)

Flo*_*ter 5

PUT只能创建一个资源,因为根据规范:

PUT方法请求创建目标资源的状态或用请求消息有效负载中包含的表示定义的状态替换目标资源的状态.

(http://tools.ietf.org/html/rfc7231#section-4.3.4)

但是,具有不同动词(例如POST)的请求可能会创建多个资源并返回201 Created状态.根据规格:

由请求创建的主要资源由响应中的Location头字段标识,或者如果没有接收到Location字段,则由有效请求URI标识.201响应有效负载通常描述并链接到创建的资源.

(http://tools.ietf.org/html/rfc7231#section-6.3.2)

因此,可以将201响应中的多个创建资源的URI返回到例如POST请求,但是Location头可能只包含一个URI.