Mantengo una antigua .aspx página en la que todos los datos requerido por la página para mostrar que el contenido se pasa en la URL de la solicitud GET como parte de la cadena de consulta. El resultado de esto es que, a medida que seguimos agregando funciones, la URL sigue creciendo.

Estoy pensando en cambiar todos los parámetros de la cadena de consulta al cuerpo de la solicitud GET.

¿Es una buena decisión de diseño y cuál es el caso de uso de un cuerpo en la solicitud GET?

Comentarios

  • ¿Por qué no utilizar simplemente una solicitud POST en su lugar?
  • Porque no estoy creando ni actualizando nada. Solo estoy recuperando información del servidor.
  • Se espera ' que las solicitudes GET sean idempotentes: solicitar la misma URL varias veces siempre obtiene un resultado equivalente. Esto, por ejemplo permite el almacenamiento en caché (lo que algunos navegadores y proxies hacen de manera muy agresiva). Si mueve parámetros de consulta al cuerpo de la solicitud, está infringiendo esta expectativa, así que evítelo. Usted ' se está preparando para problemas difíciles de depurar. Desafortunadamente, algunos sistemas tienen un límite de longitud de URL del orden de unos pocos KB. Si todavía está diseñando su API y encuentra que manejará consultas muy complejas, una API GraphQL podría ser una mejor opción que REST.
  • Además de lo que dijo @amon, poner un cuerpo en un GET La solicitud infringe explícitamente la especificación HTTP. Use POST.
  • @Manya Los comentarios sobre esta respuesta de Stack Overflow discuten un poco sobre Elasticsearch. Tenga en cuenta que los navegadores no suelen consumir Elasticsearch directamente, sino solo las aplicaciones internas, por lo que tienen un poco más de flexibilidad: usted tiene control total sobre el cliente y la red.

Respuesta

Las solicitudes GET con un cuerpo son compatibles con las especificaciones HTML.

Consulte la pregunta de Stack Overflow ¿Es correcta esta declaración? El método HTTP GET siempre no tiene cuerpo de mensaje para una discusión.

Sin embargo, es inusual. Sorprenderá a la gente con esa solución. Simplemente cambiar a un POST es una mejor idea.

El único inconveniente (¿positivo?) Son los molestos acólitos de RESTfulness.

Comentarios

  • existen inconvenientes técnicos ya que muchas bibliotecas javascript no ' t admitir GET con un cuerpo. Para las bases de datos en las que está realizando una búsqueda, tiene sentido lógico hacerlo de esa manera, pero no ' t poder realizar la llamada desde una aplicación de una sola página a su instancia de ElasticSearch o SOLR (las únicas API donde vi este combo implementado).
  • Esta pregunta dice lo mismo: stackoverflow.com/questions/978061/http-get-with-request-body " Sí. En otras palabras, cualquier solicitud HTTP El mensaje puede contener un cuerpo de mensaje y, por lo tanto, debe analizar los mensajes con eso en mente. Server sem Las travesuras para GET, sin embargo, están restringidas de modo que un cuerpo, si lo hay, no tiene un significado semántico para la solicitud. Los requisitos sobre análisis sintáctico son independientes de los requisitos sobre semántica de métodos. Entonces, sí, puede enviar un cuerpo con GET, y no, nunca es útil hacerlo. " La respuesta real tiene más detalles.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *