GET
Metodo HTTP
Specifica del metodo HTTP GET
Il metodo GET richiede il trasferimento di una rappresentazione corrente selezionata per la risorsa di destinazione. GET è il meccanismo principale di recupero delle informazioni e il fulcro di quasi tutte le ottimizzazioni delle prestazioni. Pertanto, quando si parla di recuperare un'informazione identificabile tramite HTTP, ci si riferisce generalmente a una richiesta GET.
Si è tentati di pensare agli identificatori delle risorse come a nomi di percorsi remoti del file system e alle rappresentazioni come a una copia del contenuto di tali file. In effetti, questo è il modo in cui molte risorse sono implementate (si veda la Sezione 9.1 per le relative considerazioni sulla sicurezza). Tuttavia, nella pratica non ci sono limitazioni di questo tipo. È altrettanto probabile che l'interfaccia HTTP di una risorsa sia implementata come un albero di oggetti di contenuto, una vista programmatica su vari record di database o un gateway per altri sistemi informativi. Anche quando il meccanismo di mappatura degli URI è legato a un file system, un server di origine potrebbe essere configurato per eseguire i file con la richiesta come input e inviare l'output come rappresentazione, piuttosto che trasferire direttamente i file. Indipendentemente da ciò, solo il server di origine deve sapere come ciascuno dei suoi identificatori di risorsa corrisponde a un'implementazione e come ciascuna implementazione riesce a selezionare e inviare una rappresentazione corrente della risorsa di destinazione in risposta a GET.
Un client può alterare la semantica di GET in modo che sia una "richiesta di intervallo", richiedendo il trasferimento solo di alcune parti della rappresentazione selezionata, inviando un campo di intestazione Range nella richiesta (RFC7233).
Un payload all'interno di un messaggio di richiesta GET non ha una semantica definita; l'invio di un corpo di payload in una richiesta GET potrebbe causare il rifiuto della richiesta da parte di alcune implementazioni esistenti.
La risposta a una richiesta GET è memorizzabile nella cache; una cache PUO' utilizzarla per soddisfare le successive richieste GET e HEAD, a meno che non sia indicato diversamente dal campo di intestazione Cache-Control (Sezione 5.2 di RFC7234).
Descrizione del metodo GET
Il metodo GET del protocollo HTTP può essere paragonato a un bibliotecario digitale. Chiede cortesemente al server di presentare i dati senza apportare alcuna modifica ai dati stessi - una richiesta puramente passiva.
Cosa rende speciale il metodo GET?
- Coerenza: Immagina di chiedere al bibliotecario lo stesso libro più volte - otterresti lo stesso libro ogni volta. Lo stesso vale per la richiesta GET: fornisce sempre lo stesso risultato.
- Leggi, non scrivere: La richiesta GET ha il carattere di un osservatore. Osserva i dati ma non li modifica.
- Informazioni nell'URL: Pensa all'URL come a un indirizzo o una scheda indicizzata. Indica quale libro o quale informazione stai cercando. Tuttavia, attenzione: queste schede non dovrebbero contenere note private, poiché possono essere visualizzate da altri.
- Risposte rapide ed efficienti: Grazie alla capacità di memorizzare in cache le risposte, il metodo GET può rispondere rapidamente a richieste ripetute, proprio come un bibliotecario ben organizzato che sa esattamente dove si trova ogni libro.
Ma ci sono anche delle limitazioni:
- Spazio limitato per le note: L'URL ha solo tanto spazio per le informazioni. È come scrivere su una piccola scheda indicizzata.
- Nessun segreto: Poiché gli URL sono visibili e possono essere archiviati, non dovresti annotare informazioni sensibili su di essi.
- Nessuna interferenza: Un osservatore non influisce su ciò che osserva. Pertanto, il metodo GET non dovrebbe essere utilizzato per modificare i dati. Ci sono altri strumenti nella nostra cassetta degli attrezzi digitale per quello.
Nel complesso, il metodo GET è uno strumento affidabile ed essenziale nello spazio digitale, aiutandoci a recuperare le informazioni in modo efficiente e sicuro.
Esempio per il metodo 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