Primer BORRAR : 200 o 204.
DELETES posteriores : 200 o 204.
Justificación : ELIMINAR debe ser idempotente. Si devuelve 404 en un segundo DELETE, su respuesta cambiará de un código de éxito a un código de error . El programa cliente puede tomar acciones incorrectas en base a la suposición de que DELETE falló.
Ejemplo :
- Suponga que su operación DELETE es parte de una operación de varios pasos (o una "saga") ejecutada por el programa cliente.
- El programa cliente puede ser una aplicación móvil que realice una transacción bancaria, por ejemplo.
- Digamos que el programa cliente tiene un reintento automático para una operación DELETE (tiene sentido, porque DELETE se supone que es idempotente).
- Digamos que el primer DELETE se ejecutó con éxito, pero la respuesta 200 se perdió en su camino hacia el programa cliente.
- El programa cliente reintentará ELIMINAR.
- Si el segundo intento devuelve 404, el programa cliente puede cancelar la operación general debido a este código de error.
- Pero debido a que el primer DELETE se ejecutó con éxito en el servidor, el sistema puede quedar en un estado inconsistente .
- Si el segundo intento devuelve 200 o 204, el programa cliente continuará como se esperaba.
Solo para ilustrar el uso de este enfoque, la guía de estilo HTTP API para PayPal tiene la siguiente directriz:
ELIMINAR: Este método DEBE devolver el código de estado 204 ya que no hay necesidad de devolver ningún contenido en la mayoría de los casos, ya que la solicitud es eliminar un recurso y se eliminó con éxito.
Como el método DELETE también DEBE ser idempotente, DEBE devolver 204, incluso si el recurso ya se ha eliminado. Por lo general, al consumidor de API no le importa si el recurso se eliminó como parte de esta operación o antes. Esta es también la razón por la cual 204 en lugar de 404 deben ser devueltos.
rm
.rm
devuelve un error si no existe. tools.ietf.org/html/rfc7231#section-4.3.5