接受批量 PUT 创建然后返回多个位置的正确动词和响应是什么?Location 标头似乎只支持一个 Uri。
我最初假设我可以使用 PUT 进行批量创建并返回一个带有 Uris 列表的字符串数组,但在查看规范时,似乎不支持,但也不完全清楚。
是否允许使用多个 Location 标头作为替代方案?
有什么建议吗?
不,您只能有一个 Location 标头字段(是的,从规范中可以清楚地看到)。
话虽如此,PUT 用于创建/更新单个资源。看来您正在将它用于它不是为它设计的东西......
PUT 只能创建一个资源,因为按照规范:
PUT 方法请求创建目标资源的状态或将其替换为请求消息有效负载中包含的表示定义的状态。
(https://www.rfc-editor.org/rfc/rfc7231#section-4.3.4)
但是,具有不同动词(例如 POST)的请求可能会创建多个资源并返回 201 Created 状态。根据规范:
请求创建的主要资源由响应中的 Location 头字段标识,如果没有收到 Location 字段,则由有效的请求 URI 标识。201 响应负载通常描述并链接到创建的资源。
(https://www.rfc-editor.org/rfc/rfc7231#section-6.3.2)
因此,可以在 201 响应中返回多个已创建资源的 URI,例如 POST 请求,但 Location 标头可能只包含一个 URI。
RFC 5988引入了链接 HTTP 标头。它可以用于此目的。