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

时间:2012-07-03 10:55:50

标签: http rest

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

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

是否允许使用多个位置标头?

有什么建议吗?

3 个答案:

答案 0 :(得分:10)

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

话虽如此,PUT用于创建/更新单个资源。看来你正在将它用于不是为......而设计的东西。

答案 1 :(得分: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。

答案 2 :(得分:0)

RFC 5988引入了链接HTTP标头。它可以用于此目的。