2012-07-03 4 views
9

¿Cuál es el verbo y la respuesta correcta para aceptar un PUT PACK crear y luego devolver varias ubicaciones? El encabezado de ubicación solo aparece para admitir un único Uri.¿Se puede usar el encabezado de Ubicación para múltiples ubicaciones de recursos en una respuesta 201 Created?

Supuse originalmente que podría usar PUT para crear un lote y devolver una matriz de cadenas con una lista de Uris, pero al mirar el specification, eso no parece ser compatible, pero tampoco está del todo claro .

¿Se permiten múltiples cabeceras de ubicación como alternativa?

¿Algún consejo?

Respuesta

9

No, solo puede tener un campo de encabezado de ubicación (y sí, está claro en la especificación).

Dicho esto, PUT es para crear/actualizar un único recurso. Parece que se está usando para algo que no está diseñado para ...

+0

Gracias por aclarar eso. Entonces, ¿deberíamos usar POST para crear lotes? – Junto

+0

Junto: sí, POST funciona para "todo" :-) –

+2

Sí, pero la pregunta aún persiste: en una situación de creación por lotes ¿cómo se devuelven todas las ubicaciones de recursos individuales? Un enfoque largo: compilar esas ubicaciones de recursos en su * propio recurso * y devolver una URL a * que *, pero como dije, es un poco largo. – StarTrekRedneck

5

PUT sólo puede crear un recurso, porque de acuerdo a la especificación:

la opción de venta solicitudes método que el estado de la el recurso de destino se crea o reemplaza con el estado definido por la representación incluida en la carga útil del mensaje de solicitud.

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

Sin embargo, es posible que una solicitud con un verbo diferente (como POST) para crear varios recursos y devolver un estado Creado 201. De acuerdo con la especificación:

El recurso principal creado por la solicitud se identifica por un campo de encabezado de ubicación en la respuesta o, si no se recibe el campo Ubicación, por el URI de solicitud efectiva. La carga útil de la respuesta 201 normalmente describe y vincula a los recursos creados.

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

Así que está bien para volver las URIs de múltiples recursos creados en una respuesta 201 a, por ejemplo, una solicitud POST, pero la cabecera Location sólo puede contener un identificador URI.

+1

Es cierto, pero usted está citando un documento obsoleto. –

+0

Gracias. Corregido ahora (espero). –

0

RFC 5988 introduce el encabezado de enlace HTTP. Se puede usar para este propósito.

Cuestiones relacionadas