una - ¿Qué llamadas REST PUT/POST/DELETE deben devolver por convención?
rest api tutorial español (3)
En general, las convenciones son "pensar como si solo estuvieras 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 el renderizado tenga éxito, por supuesto). Para un POST, haría un redireccionamiento al recurso creado (suponiendo que estés haciendo una operación de creación; si no, solo devuelve los resultados); el código para una creación exitosa es un 201, que es realmente el único código HTTP para una redirección que no está en el rango 300.
Nunca me ha alegrado lo que DELETE debe devolver (mi código actualmente produce un HTTP 204 y un cuerpo vacío en este caso).
De acuerdo con la "ideología REST", ¿qué debería estar en el cuerpo de respuesta para las solicitudes PUT / POST / DELETE?
¿Qué pasa con los códigos de retorno? ¿
HTTP_OK
es suficiente?¿Cuál es el motivo de tales convenciones, si las hay?
He encontrado una buena publicación que describe las diferencias POST / PUT: POST vs PUT Pero todavía no responde mi pregunta.
La creación de un recurso generalmente se correlaciona con POST, y eso debería devolver la ubicación del nuevo recurso; por ejemplo, en un andamio de Rails, un CREATE redirigirá al SHOW para el recurso recién creado. El mismo enfoque puede tener sentido para la actualización (PUT), pero eso es menos convencional; una actualización solo necesita indicar el éxito. Una eliminación probablemente solo necesite indicar el éxito también; si desea redirigir, devolver la LISTA de recursos probablemente tenga más sentido.
El éxito se puede indicar mediante HTTP_OK, sí.
La única regla difícil en lo que he dicho anteriormente es que un CREATE debería devolver la ubicación del nuevo recurso. Eso parece una obviedad para mí; tiene perfecto sentido que el cliente necesite poder acceder al nuevo elemento.
Perdone la ligereza, pero si está haciendo REST sobre HTTP, RFC7231 describe exactamente qué comportamiento se espera de GET, PUT, POST y DELETE.