significado siglas restful protocol entre ejemplo diferencia cliente rest

siglas - ¿Cómo devolver el ID generado en RESTful POST?



rest vs soap (3)

Digamos que tenemos un servicio para agregar un nuevo hotel:

> POST /hotel > <hotel> > <a>aaa</a> > <b>aaa</b> > <c>aaa.......this is 300K</c> > </hotel>

Y luego tenemos un get

> GET /hotel < HTTP/1.1 200 OK < <hotel> < <a>aaa</a> < <b>aaa</b> > <c>aaa.......this is 300K</c> < </hotel>

La pregunta es: ¿qué devolvemos para la creación POST inicial? Nos gustaría devolver la ID (generada en el servidor) para una "referencia" al nuevo recurso, pero no queremos devolver todos los datos del hotel, ya que en nuestro caso uno de los campos de datos es un archivo plano de ~ 300K .

Así que, ¿deberías regresar?

< HTTP/1.1 200 OK < <hotel> < <id>123</id> < </hotel>

O debe devolver el objeto completo:

< HTTP/1.1 200 OK < <hotel> < <id>123</id> < <a>aaa</a> < <b>aaa</b> > <c>aaa.......this is 300K</c> < </hotel>

??

Estoy interesado en las mejores prácticas de descanso.

Nota: esta post relacionada habla más sobre qué devolver y menos sobre cómo devolverla.


Devuelva el código de estado 201 - Creado, y coloque la URL en el encabezado de la ubicación. No necesitas devolver un cuerpo en absoluto.


La única ventaja de devolver un encabezado de ubicación y el cuerpo de la entidad real en la respuesta es que el cliente puede recibir la representación resultante en un solo viaje de ida y vuelta al servidor. AtomPub hace esto, por ejemplo.


REST tiene que ver con la URL a los recursos.

La mejor práctica de REST es devolver la URL utilizada para acceder al recurso que se acaba de crear.

No devolvería todo el documento. A menos que sea importante para el protocolo por alguna razón (como el servidor puede cambiar los datos que el cliente envía y el cliente quiere confirmar que está bien). Si no es importante, el cliente ya conoce los datos.

Si devuelve solo el ID, el cliente no sabrá qué hacer con él. Pero devolver una URL permitirá al cliente continuar la interacción REST con el servidor (probablemente al obtener un documento de descripción del servicio). Esto no quiere decir que no puede devolver el ID junto con la URL. Pero la URL, porque es un sistema web, es la información más importante que puede conocer. Además, es probable que la ID sea algo que necesite internamente para su backend, no algo que el cliente deba tener que preocuparse.

EDITAR:
En cuanto a si debe ajustar la URL devuelta en XML, realmente depende de su protocolo. Si cree que podría querer devolver otros datos en el futuro, XML sería más prudente. Tener un formato de archivo con nombre le permitirá mejorar la versión de sus servicios (cambiando el encabezado de tipo de documento). Pero puedes devolver la URL.