Questo materiale fa parte della serie "Introduzione allo sviluppo aziendale". Articoli precedenti:
Ciao! Oggi comprenderemo i protocolli HTTP e HTTPS. Ma prima chiariamo un punto: stiamo parlando di protocolli di trasferimento dati sulla rete a livello applicativo del modello OSI. Come ricorderete, abbiamo discusso del modello OSI in uno degli articoli precedenti. E se non ricordi, eccolo qui .
Vale subito la pena notare che il protocollo HTTP è costituito solo da testo. Ebbene, a noi interessa soprattutto la struttura in cui si trova questo testo. Ogni messaggio è composto da tre parti:
Cos'è un protocollo di trasferimento dati
Questo è il nome dato all'accordo generalmente accettato, grazie al quale gli sviluppatori di diversi servizi inviano informazioni in un unico modulo. Ad esempio, utilizzando Google Chrome, puoi ottenere informazioni sia da Facebook che da Twitter, perché gli sviluppatori le trasmettono utilizzando il protocollo HTTP standard e il tuo browser può gestirle. Le regole uniformi sono molto convenienti anche per gli stessi sviluppatori lato server: ci sono molte librerie che possono convertire le informazioni per te e inviarle utilizzando il protocollo richiesto. HTTP è stato originariamente concepito come protocollo per il trasferimento di pagine HTML. Questo è stato così per molto tempo, ma ora i programmatori spesso trasferiscono su di esso sia stringhe che file multimediali. Nel complesso, questo protocollo è versatile e flessibile ed è davvero facile da usare. Ora scopriamo come farlo.
Struttura HTTP
Vale subito la pena notare che il protocollo HTTP è costituito solo da testo. Ebbene, a noi interessa soprattutto la struttura in cui si trova questo testo. Ogni messaggio è composto da tre parti:
- Linea iniziale: definisce i dati del servizio.
- Intestazioni: descrizione dei parametri del messaggio.
- Corpo del messaggio (Body) - dati del messaggio. Deve essere separato dalle intestazioni con una riga vuota.
Come appare una semplice richiesta HTTP
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
La riga di partenza contiene:
- GET - metodo di richiesta;
- / - percorso della richiesta (percorso);
- HTTP/1.1 - versione del protocollo di trasferimento dati.
- Host : l'host a cui è indirizzata la richiesta;
- User-Agent è il client che invia la richiesta.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
La richiesta viene inviata a javarush.com/user/create/json, la versione del protocollo è HTTP/1.1. Accept specifica il formato di risposta che il client si aspetta di ricevere, Content-Type specifica il formato in cui viene inviato il corpo del messaggio. Content-Length: il numero di caratteri nel corpo. Una richiesta HTTP può contenere molte intestazioni diverse. Maggiori dettagli possono essere trovati nelle specifiche del protocollo .
Risposte HTTP
Dopo aver ricevuto la richiesta, il server la elabora e invia una risposta al client:HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
La riga iniziale nella risposta contiene la versione del protocollo (HTTP/1.1), il codice di stato (200), la descrizione dello stato (OK). I titoli indicano il tipo e la lunghezza del contenuto. Il corpo della risposta contiene il codice HTML che il browser disegnerà nella pagina HTML.
Codici di stato della risposta
Tutto è chiaro con il corpo e le intestazioni del messaggio, ma vale la pena spendere qualche parola sui codici di stato. I codici di stato della risposta sono sempre tre cifre e la prima cifra del codice indica la categoria della risposta:- 1xx - informativo. La richiesta è stata ricevuta, il server è pronto per proseguire;
- 2xx - riuscito. La richiesta è stata ricevuta, compresa ed elaborata;
- 3xx - reindirizzamento. Per elaborare la richiesta è necessario eseguire i seguenti passaggi;
- 4xx: errore del client. La richiesta contiene errori o non è conforme al protocollo;
- 5xx: errore del server. Il server non è riuscito a elaborare la richiesta, nonostante fosse stata composta correttamente;
- 200 OK: la richiesta è stata ricevuta ed elaborata con successo;
- 201 Creato: la richiesta è stata ricevuta ed elaborata con successo, con conseguente creazione di una nuova risorsa o della sua istanza;
- 301 Moved Permanently: la risorsa richiesta è stata spostata in modo permanente e le successive richieste ad essa devono avvenire al nuovo indirizzo;
- 307 Reindirizzamento temporaneo: la risorsa è stata spostata temporaneamente. Per ora puoi accedervi utilizzando il reindirizzamento automatico;
- 403 Vietato - la richiesta è chiara, ma è necessaria l'autorizzazione;
- 404 Not Found: il server non ha trovato la risorsa a questo indirizzo;
- 501 Not Implemented: il server non supporta la funzionalità per rispondere a questa richiesta;
- 505 Versione HTTP non supportata: il server non supporta la versione specificata del protocollo HTTP.
GO TO FULL VERSION