¿Hay algo que no sea RESTful sobre proporcionar parámetros a una solicitud HTTP DELETE?
Mi escenario es que estoy modelando el mensaje "¿Estás seguro de que quieres eliminar eso?" guión. En algunos casos, el estado del recurso sugiere que la eliminación solicitada puede no ser válida. Probablemente pueda imaginar algunos escenarios en los que se requiere la confirmación de una eliminación
La solución que hemos adoptado es pasar un parámetro a la solicitud de eliminación para indicar que está bien continuar con la eliminación ("? Force_delete = true")
p.ej
DELETE http://server/resource/id?force_delete=true
Creo que todavía es tranquilo ya que:
(a) La semántica de DELETE no se está cambiando: el usuario aún puede enviar una solicitud DELETE normal, pero esto puede fallar con 409 y el cuerpo de la respuesta explicará por qué. Digo que puede fallar porque (por razones que no vale la pena explicar) en algunas ocasiones no hay razón para avisar al usuario.
(b) No hay nada en la disertación de Roy que sugiera que está en contra del espíritu de REST: ¿por qué habría de existir ya que HTTP es solo una implementación de REST? ¿Por qué sería importante pasar los parámetros HTTP?
¿Alguien puede señalarme una declaración definitiva que explique la razón por la cual esto no es RESTful?
En una pregunta relacionada, si el usuario no especifica force_delete, entonces estoy regresando 409 Conflict
: ¿es ese el código de respuesta más apropiado?
Seguimiento
Después de algunas investigaciones adicionales, creo que agregar parámetros a DELETE puede violar varios principios.
La primera es que la implementación posiblemente viola la "Interfaz Uniforme" (ver sección 5.1.5 de la disertación de Roy
Al agregar 'force_delete' estamos agregando una restricción adicional al método DELETE ya bien definido. Esta restricción es significativa solo para nosotros.
También podría argumentar que viola el "5.1.2 Cliente-Servidor" ya que el diálogo de confirmación es realmente una preocupación de UI y nuevamente no todos los clientes querrán confirmar la eliminación.
Sugerencias a alguien?