2010-11-16 13 views
84

Necesito invocar un proceso que no requiera ninguna entrada del usuario, solo un desencadenador. Planeo usar POST/uri sin un cuerpo para activar el proceso. Quiero saber si esto se considera malo desde las perspectivas HTTP y REST?¿Se considera una mala práctica realizar HTTP POST sin cuerpo de entidad?

+2

Gracias a todos por sus sugerencias. Aunque todos dieron una sugerencia similar, es decir, está bien publicar con cero contenido, estoy seleccionando la respuesta de Darrel como correcta debido al enlace a la discusión IETF. La discusión aclara mucho. –

Respuesta

67

Pregunté this question en el grupo de trabajo IETF HTTP hace unos meses. La respuesta corta es, sí, está bien, pero sugiero leer el hilo para más detalles.

36

El uso de un POST en lugar de un GET es perfectamente razonable, ya que también instruye al servidor (y las puertas de enlace a lo largo del camino) a no devolver una respuesta en caché.

+4

+1 Hmm es bueno saberlo. – Ben

9

Si usa POST/uri sin cuerpo, es algo así como usar una función que no toma un argumento .e.g int post (void); por lo tanto, es razonable tener una función para su clase de recurso que pueda cambiar el estado de un objeto sin tener un argumento. Si considera implementar la función táctil Unix para un URI, ¿no es una buena opción?

+1

Touch/finger es una ilustración de libro de texto de una acción no ideopotente que es intrínsecamente sin contenido. –

20

POST está completamente bien. En diferencia de GET con POST, está cambiando el estado del sistema (lo más probable es que su desencadenante esté "haciendo" algo y cambiando los datos).

Ya usé POST sin carga útil y "se siente" bien. Una cosa que debe hacer cuando usa POST sin carga: Pase el encabezado Content-Length: 0. Recuerdo problemas con algunos proxies cuando api-client no lo pasaba.

Cuestiones relacionadas