Estoy diseñando una API para ir sobre HTTP y me pregunto si usar el comando HTTP POST, pero solo con parámetros de consulta de URL y sin cuerpo de solicitud, es una buena manera de hacerlo.
Consideraciones:
- El "buen diseño web" requiere que se envíen acciones no idempotentes a través de POST. Esta es una acción no idempotente.
- Es más fácil desarrollar y depurar esta aplicación cuando los parámetros de solicitud están presentes en la URL.
- La API no está destinada a un uso generalizado.
- Parece que realizar una solicitud POST sin cuerpo requerirá un poco más de trabajo, por ejemplo, se
Content-Length: 0
debe agregar explícitamente un encabezado. - También me parece que un POST sin cuerpo es un poco contrario a las expectativas de la mayoría de los desarrolladores y los marcos HTTP.
¿Hay más dificultades o ventajas para enviar parámetros en una solicitud POST a través de la consulta URL en lugar del cuerpo de la solicitud?
Editar: La razón por la que esto se está considerando es que las operaciones no son idempotentes y tienen otros efectos secundarios además de la recuperación. Ver la especificación HTTP :
En particular, la convención ha establecido que los métodos GET y HEAD NO DEBEN tener la importancia de tomar una acción que no sea la recuperación. Estos métodos deben considerarse "seguros". Esto permite a los agentes de usuario representar otros métodos, como POST, PUT y DELETE, de una manera especial, para que el usuario sea consciente del hecho de que se está solicitando una acción posiblemente insegura.
...
Los métodos también pueden tener la propiedad de "idempotencia" en que (aparte de los problemas de error o caducidad) los efectos secundarios de N> 0 solicitudes idénticas son las mismas que para una solicitud única. Los métodos GET, HEAD, PUT y DELETE comparten esta propiedad. Además, los métodos OPTIONS y TRACE NO DEBEN tener efectos secundarios, por lo que son inherentemente idempotentes.