¿Se considera una mala práctica realizar HTTP POST sin cuerpo de entidad?
Necesito invocar un proceso que no requiera ninguna entrada por parte del usuario, solo un disparador. Planeo usar POST /uri sin cuerpo para desencadenar el proceso. Quiero saber si esto se considera malo tanto desde la perspectiva HTTP como REST.
Hice esta pregunta en el grupo de trabajo HTTP del IETF hace unos meses. La respuesta corta es: NO, no es una mala práctica (pero sugiero leer el hilo para más detalles).
Usar un POST en lugar de un GET es perfectamente razonable, ya que también le indica al servidor (y a las puertas de enlace a lo largo del camino) que no devuelva una respuesta almacenada en caché.
La publicación está completamente bien. A diferencia de GET con POST, usted está cambiando el estado del sistema (lo más probable es que su disparador sea "hacer" algo y cambiar datos).
Ya usé POST sin carga útil y "se siente" bien. Una cosa que debes hacer al usar POST sin carga útil: pasar el encabezado Content-Length: 0
. Recuerdo problemas con algunos servidores proxy cuando api-client no los aprobó.
Si usa POST /uri sin cuerpo, es algo así como usar una función que no acepta un argumento, por ejemplo, int post (void); por lo que es razonable tener una función en su clase de recurso que pueda cambiar el estado de un objeto sin tener un argumento. Si considera implementar la función táctil de Unix para un URI, ¿no sería una buena opción?