GET
Método HTTP
Especificación del método HTTP GET
El método GET solicita la transferencia de una representación actual seleccionada para el recurso de destino. GET es el mecanismo principal de recuperación de información y el foco de casi todas las optimizaciones de rendimiento. Por lo tanto, cuando la gente habla de recuperar alguna información identificable a través de HTTP, por lo general se refieren a hacer una solicitud GET.
Es tentador pensar en los identificadores de recursos como nombres de ruta del sistema de archivos remotos y en las representaciones como una copia del contenido de dichos archivos. De hecho, así es como se implementan muchos recursos (véase la Sección 9.1 para las consideraciones de seguridad relacionadas). Sin embargo, en la práctica no existen tales limitaciones. La interfaz HTTP de un recurso puede implementarse como un árbol de objetos de contenido, una vista programática de varios registros de bases de datos o una pasarela a otros sistemas de información. Incluso cuando el mecanismo de mapeo URI está vinculado a un sistema de archivos, un servidor de origen podría estar configurado para ejecutar los archivos con la solicitud como entrada y enviar la salida como representación en lugar de transferir los archivos directamente. En cualquier caso, sólo el servidor de origen necesita saber cómo cada uno de sus identificadores de recurso corresponde a una implementación y cómo cada implementación consigue seleccionar y enviar una representación actual del recurso de destino en una respuesta a GET.
Un cliente puede alterar la semántica de GET para que sea una "solicitud de rango", solicitando la transferencia de sólo algunas parte(s) de la representación seleccionada, enviando un campo de cabecera Range en la solicitud (RFC7233).
Una carga útil dentro de un mensaje de solicitud GET no tiene una semántica definida; el envío de un cuerpo de carga útil en una solicitud GET puede hacer que algunas implementaciones existentes rechacen la solicitud.
La respuesta a una solicitud GET es almacenable en caché; una caché PUEDE utilizarla para satisfacer solicitudes GET y HEAD posteriores a menos que se indique lo contrario mediante el campo de cabecera Cache-Control (Sección 5.2 de RFC7234).
La respuesta a una solicitud GET es almacenable en caché.
Descripción del método GET
El método GET del protocolo HTTP se puede comparar con un bibliotecario digital. Pide educadamente al servidor presentar datos sin hacer ningún cambio en los datos en sí – es una solicitud puramente pasiva.
¿Qué hace especial al método GET?
- Consistencia: Imagina pedirle al bibliotecario el mismo libro varias veces – recibirías el mismo libro cada vez. Lo mismo ocurre con la solicitud GET: siempre entrega el mismo resultado.
- Leer, no escribir: La solicitud GET tiene el carácter de un observador. Observa los datos pero no los modifica.
- Información en el URL: Piensa en el URL como una dirección o una ficha índice. Indica qué libro o información estás buscando. Sin embargo, precaución: estas fichas no deben contener notas privadas, ya que otros pueden verlas.
- Respuestas rápidas y eficientes: Gracias a la capacidad de almacenar respuestas en caché, el método GET puede responder rápidamente a solicitudes repetidas, al igual que un bibliotecario bien organizado que sabe exactamente dónde está ubicado cada libro.
Pero también tiene limitaciones:
- Espacio limitado para notas: El URL solo tiene tanto espacio para información. Es como escribir en una pequeña ficha índice.
- No hay secretos: Dado que los URL son visibles y pueden ser almacenados, no debes anotar ninguna información sensible en ellos.
- No interferencia: Un observador no influencia lo que observa. Por lo tanto, el método GET no debe usarse para modificar datos. Hay otras herramientas en nuestra caja de herramientas digital para eso.
En general, el método GET es una herramienta confiable y esencial en el espacio digital, que nos ayuda a recuperar información de manera eficiente y segura.
Ejemplo para el método HTTP GET
GET /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache