De acuerdo con la "ideología REST", ¿qué debe estar en el cuerpo de respuesta para una solicitud PUT / POST / DELETE?
¿Qué pasa con los códigos de retorno? Es
HTTP_OK
suficiente?¿Cuál es la razón de tales convenciones, si hay alguna?
He encontrado una buena publicación que describe las diferencias POST / PUT: POST vs PUT Pero todavía no responde mi pregunta.
rest
http
post
http-delete
tuxSlayer
fuente
fuente
En general, las convenciones son "piensa que solo estás entregando páginas web".
Para un PUT, devolvería la misma vista que obtendría si hiciera un GET inmediatamente después; eso daría como resultado un 200 (bueno, suponiendo que la representación tenga éxito, por supuesto). Para una POST, haría una redirección al recurso creado (suponiendo que esté haciendo una operación de creación; si no, simplemente devuelva los resultados); el código para una creación exitosa es 201, que es realmente el único código HTTP para una redirección que no está en el rango de 300.
Nunca me gustó lo que debería devolver DELETE (mi código actualmente produce un HTTP 204 y un cuerpo vacío en este caso).
fuente
PUT
solicitud devuelva la página siguiente parece una mala práctica, ya que actualizar la página resultante hará que la solicitud se ejecute nuevamente. En cambio, para mí, tiene sentido hacer una redirección, suponiendo que se trata de solicitudes sincrónicas.PUT
solicitud que provoque la reversión de los datos. Por ejemplo, si dos personas hacen referencia a la misma página, una realiza una actualización, la otra hace una actualización, si la primera persona se actualiza para ver el resultado, terminaría haciendo que las cosas se reviertan antes de que la segunda persona realice sus cambiosLa creación de un recurso generalmente se asigna a POST, y eso debería devolver la ubicación del nuevo recurso; por ejemplo, en un andamio Rails, un CREATE redirigirá al SHOW para el recurso recién creado. El mismo enfoque podría tener sentido para la actualización (PUT), pero eso es menos convencional; una actualización solo necesita indicar éxito. Una eliminación probablemente solo necesite indicar éxito también; si desea redirigir, devolver la LISTA de recursos probablemente tenga más sentido.
El éxito puede ser indicado por HTTP_OK, sí.
La única regla estricta en lo que he dicho anteriormente es que un CREATE debería devolver la ubicación del nuevo recurso. Eso me parece una obviedad; tiene mucho sentido que el cliente deba poder acceder al nuevo elemento.
fuente
Por el RFC7231 no importa y puede estar vacío
Cómo implementamos la solución basada en el estándar json api en el proyecto:
post / put: genera atributos de objeto como en get (el filtro de campo / relaciones aplica lo mismo)
eliminar: los datos solo contienen nulos (por su representación del objeto perdido)
estado para eliminación estándar: 200
fuente
Me gusta Alfonso Tienda responde del código de estado HTTP para actualizar y eliminar.
Aquí hay algunos consejos:
ELIMINAR
PONER
fuente