HTTP - Prof-Matteo-Palitto-Peano/Web-Services GitHub Wiki

Hyper Text Transfer Protocol

Un Protocollo e' un insieme di regole che hanno uno scopo comune, in questo caso lo scopo e' il trasferimento di informazione tra 2 computer.

HTTP e' un protocollo a livello applicativo che usa le reti informatiche per il trasporto e in particolare usa il protocollo TCP/IP che ne garantisce l'integrita' dell'informazione.

Hyper Text tradotto in Italiano Ipertesto è un insieme di documenti messi in relazione tra loro per mezzo di parole chiave. Può essere visto come una rete o ragnatela (WEB) ; i documenti ne costituiscono i nodi. La caratteristica principale di un ipertesto è che la lettura può svolgersi in maniera non lineare: qualsiasi documento della rete può essere "il successivo", in base alla scelta del lettore di quale parola chiave usare come collegamento.

Le parole chiave sono messe in evidenza e quando cliccate il client(Navigatore|Browser) usato per la lettura del documento Naviga (Browse) al nuovo documento associato a quella parola chiave (Link).

HTTP is MEDIA independent

Qualsisi sia il tipo di dato (testo, musica, video...) puo' essere trasferito tra i due computer a patto che entrambi lo possano gestire.

HTTP is CONNECTION-LESS

La connessione avviene tra un Client e un server (Web Client <-HTTP-> Web Server)

Il Client viene chiamato WEB Browser, ovvero Navigatore della ragnatela, si connette al WEB Server mediante connessione TCP/IP e richiede un documento. Il Browser rimarra' quindi in attesa di risposta.

Il WEB Server riceve la richiesta, la elabora, e invia la risposta al WEB Browser.

Una volta ricevuta la risposta, il Browser interrompe la connessione TCP/IP.

Se il Browser volesse richiedere una nuova pagina al server, dovrebbe re-iniziare una nuova connessione TCP/IP.

Propio per questa caratteristica che la connessione TCP/IP viene creata e distrutta per il trasferimento di ogni documento, il protocollo HTTP viene detto CONNECTION-LESS.

HTTP is STATE-LESS

Entrambi il Client che il Server non mantengono alcuna informazione della connessione tra loro avvenuta, e quindi se ci fosse una ulteriore connessione tra i due, sarebbe come se fosse la prima volta...

HTTP Request

Web Browser --Request--> Web Server

La Richiesta e' inoltrata dal Browser e indirizzata al Web Server

La richiesta contiene

  • l'identificazione della risorsa/documento mediante un formato chiamato URL (Uniform Resource Locator)
  • Il tipo di richiesta (Method)
  • Il corpo della richiesta (opzionale)

Che cos'è un URL

Come abbiamo detto (e come ci dice il nome, Uniform Resource Locator), l'URL è uno degli elementi fondamentali del World Wide Web. Si tratta di una stringa alfanumerica, composta da un numero variabile di caratteri, che identifica in maniera certa e univoca una risorsa all'interno della Rete.

Tipi di richieste HTTP

Request METHOD Description
GET Asks to get the resource at the requested URL.
POST Asks the server to accept the body info attached. It is like GET request with extra info sent with the request.
HEAD Asks for only the header part of whatever a GET would return. Just like GET but with no body.
TRACE Asks for the loopback of the request message, for testing or troubleshooting.
PUT Says to put the enclosed info (the body) at the requested URL.
DELETE Says to delete the resource at the requested URL.
OPTIONS Asks for a list of the HTTP methods to which the thing at the request URL can respond

GET

GET è il tipo di metodo di richiesta HTTP più semplice; quello che il browser usa ogni volta che cliccate su un link o inserite una URL nella barra degli indirizzi. Richiede al server di trasmettere al client le informazioni identificate nella URL. Le informazioni lato server non dovrebbero essere modificate in risultato ad una richiesta GET. In questo senso, una richiesta GET è di sola lettura, ma certamente una volta che il Browser riceve le informazioni, è libero di compiere ogni operazione su di esse - ad esempio formattarle per visualizzarle.

N.B. La richiesta di tipo GET non possiede corpo (body) ma solo intestazione (header)

Anatomia di una Richiesta GET

Con una richiesta di tipo GET e' possibile inviare dei dati al Server direttamente nella formulazione del URL e che quindi compariranno nella barra degli indirizzi del Browser.

GET/RegisterDao.jsp?name1=value1&name2=value2 Richiesta di tipo GET

Caratteristiche delle Richieste GET

  • Rimangono nella lista delle richieste effettuate dal Browser (history)
  • Puo' essere memorizzata come preferita nel Browser
  • La risposta del Server puo' essere mantenuta in memoria del Browser (Cached)
  • Ha un limite della lunghezza dei dati trasmessi al Server
  • Non dovrebbe essere utilizzata per trasferire dati riservati (vedi username e password)
  • Dovrebbe essere utilizzata semplicemente per richiedere dei documenti al Server

POST

POST viene utilizzato quando si desidera inviare dei dati insieme alla richiesta.

N.B. La richiesta di tipo POST possiede corpo (body) usato dal Browser per inviare dei dati al Server.

Le richieste POST potrebbero causare l'elaborazione del corpo come un subordinato della URL a cui vi riferite.

POST /clients/ non dovrebbe causare la modifica della risorsa /clients/ stessa, ma un documento la cui URL inizi con /clients/. Per esempio, potrebbe aggiungere un nuovo cliente all'elenco, con un id generato dal server /clients/some-unique-id e contenente i dati trasferiti nel corpo della richiesta.

Anatomia di una Richiesta POST

Con una richiesta di tipo POST e' possibile inviare dei dati al Server nel corpo (body) della richiesta

Richiesta di tipo POST

Caratteristiche delle Richieste POST

  • Non possono essere memorizzate nei Preferiti del Browser
  • Non ci sono limiti der dati che possono essere trasferiti con la richiesta
  • La Risposta non viene mantenuta nella memoria locale del Browser
  • Non viene inserita nella memoria delle richieste effettuate dal Browser
⚠️ **GitHub.com Fallback** ⚠️