Slide di Università su Protocollo HTTP & web-service REST - Concetti Fondamentali. Il Pdf esplora l'origine, la struttura e i metodi di HTTP e REST, le operazioni CRUD e l'architettura JDBC, utile per studenti universitari di Informatica.
See more12 Pages
Unlock the full PDF for free
Sign up to get full access to the document and start transforming it with AI.
Questo PDF pone le basi per la comprensione della comunicazione e dei servizi web.
1. Origine del Protocollo HTTP (Slide 2-3):
○
Inventato da Tim Berners-Lee al CERN nel 1991.
○
Obiettivo: Rendere disponibili online articoli scientifici in un formato
ipertestuale collegato (WWW - World Wide Web).
○
HTTP è un protocollo di livello applicativo, che tipicamente utilizza TCP per il
trasporto.
○
Opera su un modello client-server (cooperazione asimmetrica):
○
2.
3. Siti Web e Protocollo HTTP (Slide 4-6):
○
I siti web sono ospitati su server; i browser (client) richiedono pagine web.
o HTTP (Hyper-Text Transfer Protocol) gestisce richieste di risorse,
aggiornamenti, creazioni ed eliminazioni.
o Porta standard: TCP 80 (per http://).
○
HTTPS (HTTP Secure): HTTP su TLS (Transport Layer Security) per
autenticazione e cifratura. Porta standard: TCP 443 (per https://). TLS si
colloca tra il livello di trasporto e quello applicativo.
○
HTTP è primariamente testuale (richieste e risposte sono stringhe
alfanumeriche).
o HTML (Hyper-Text Markup Language): Linguaggio (anch'esso di
Berners-Lee) usato per strutturare e presentare il contenuto delle pagine web
(testo, immagini, multimedia).
4.
5. Struttura Richiesta/Risposta HTTP (Slide 7-9):
○
Richiesta (Request):
○
○
Risposta (Response):
○
6.
7. Metodi delle Richieste HTTP (Slide 10):
○
GET: Recupera una risorsa. (Usato dai browser per le pagine web).HEAD: Recupera solo gli header di una risorsa.
○
○
POST: Invia dati da elaborare (es. creare o integrare una risorsa).
PUT: Crea o sostituisce una risorsa con il payload della richiesta.
○
○
DELETE: Elimina una risorsa specificata.
TRACE: Restituisce in eco la richiesta ricevuta.
○
○
CONNECT: Stabilisce un tunnel verso il server.
○
OPTIONS: Ottiene le opzioni di comunicazione per la risorsa target.
○
PATCH: Applica modifiche parziali a una risorsa.
8.
9. Codici di Stato HTTP (Slide 11-14):
○
1xx (Informativa): Es. 100 Continue.
○
2xx (Successo): Es. 200 OK, 201 Created, 204 No Content.
○
3xx (Ridirezione): Es. 301 Moved Permanently, 304 Not Modified.
○
4xx (Errore Client): Es. 400 Bad Request, 401 Unauthorized, 403 Forbidden,
404 Not Found, 405 Method Not Allowed.
○
5xx (Errore Server): Es. 500 Internal Server Error, 501 Not Implemented,
503 Service Unavailable.
10.
11. Header HTTP Comuni (Slide 15):
○
Richiesta: Host, Date, Content-Length, Content-Type, Accept,
Accept-Encoding, Accept-Charset, User-Agent, Authorization, Upgrade.
○
Risposta: Server, Date, Content-Length, Content-Type, Last-Modified,
Content-Encoding.
12.
13. MIME Types (Internet Media Types) (Slide 16):
○
Standard per la codifica del contenuto (originato dagli allegati email).
○
Categorie: application (PDF), audio (MP3), image (JPEG), message, model,
multipart, text (HTML, XML), video (MPEG).
14.
15. Modello CRUD e HTTP (Slide 17):
○
Create -> POST
Read -> GET
○
○
Update -> PUT
○
Delete -> DELETE
16.
17. Versioni del Protocollo HTTP (Slide 19-25):
○
HTTP/1.1: Storica, ancora ampiamente usata (ultima revisione 1999).
HTTP/2: Standardizzato nel 2015 (basato su SPDY di Google).
○
○
○
QUIC (Quick UDP Internet Connections) -> HTTP/3: Standardizzato nel
2020.
○
18.
19. Web-service di tipo REST (Slide 26-35):
○
Risorse consumate da applicazioni software (non direttamente da umani).
○
Spesso usano formati XML o JSON. Accessibili tramite URL.
○
Esempio Google Maps Elevation API:
○
○
Web API: Specifiche per la composizione degli URL, formati di risposta, dati
di richiesta.
○
Programmable Web: Concetto di software che interagisce con risorse web.
○
Mashup: Creazione di nuovi servizi combinando quelli esistenti.
○
Query-string: Parametri nell'URL dopo ?, coppie nome=valore separate da
&. I caratteri speciali richiedono URL-encoding (es. spazio a + o %20).
20.
21. REST (REpresentational State Transfer) (Slide 36-40):
○
Stile architetturale teorizzato da Roy Fielding (2000).
○
L'interazione è analoga a un umano che naviga un sito web.
○
SOAP (Simple Object Access Protocol): Alternativa, basata su XML, usa
WSDL. SOAP spesso usa HTTP meramente come layer di trasporto, mentre
REST sfrutta le funzionalità del protocollo applicativo HTTP.
o Principi Fondamentali di REST (Fielding):
○
○
Interfaccia Uniforme (Uniform Interface): Un vincolo chiave di REST.
○
RESTful: Un web service che aderisce pienamente ai principi REST.
22
23. Concetti Chiave (Slide 41-43): Riepilogo dei punti precedenti.
24. Mappa Concettuale (Slide 44): Riepilogo visivo.
Questo PDF si concentra sull'interazione con il database backend per i web service
utilizzando JDBC di Java.
1. Operazioni CRUD e SQL (Slide 2):
○
Le risorse dei web service sono spesso persistite in database relazionali (es.
Oracle, MySQL).
o Mappatura CRUD a SQL:
Create -> INSERT
Read -> SELECT
Update -> UPDATE
Delete -> DELETE
○
2.
3. JDBC (Java DataBase Connectivity) (Slide 3-4):
○
API Java standard per accedere a database relazionali usando SQL.
○
Indipendente da piattaforma e DBMS.
○
Architettura: Applicazione -> API JDBC -> JDBC Driver Manager -> Driver
JDBC -> DBMS.
o Interfacce/classi chiave di java.sql: DriverManager (classe), Driver
(interfaccia), Connection (interfaccia), Statement (interfaccia), ResultSet
(interfaccia).
4.
5. Fasi dell'Interazione JDBC (Slide 5-14):
○
0. Caricamento del Driver:
Class.forName("com.mysql.jdbc.Driver"); (vecchio modo, registra il
driver con DriverManager).
Osservazione: Le versioni più recenti di JDBC potrebbero caricare i
driver automaticamente.
○
○
1. Connessione al Server DBMS:· DriverManager.getConnection(url, username, password) restituisce un
oggetto Connection.
Formato URL JDBC: jdbc:mysql://127.0.0.1:3306/nome_database
Esempio: Connection con =
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/Phoneboo
k", "root", "");
127.0.0.1 è localhost, 3306 è la porta predefinita di MySQL.
SQLException se la connessione fallisce.
Esempio TestConnection.java (Slide 8): Dimostra la connessione a un
DB MySQL. Nota sulla sicurezza riguardo all'hardcoding delle
credenziali.
○
○
2. Esecuzione di Comandi/Query SQL:
Connection.createStatement() restituisce un oggetto Statement.
boolean execute(String sql): Per qualsiasi SQL; true se viene restituito
un ResultSet.
ResultSet executeQuery(String sql): Per query SELECT.
int executeUpdate(String sql): Per DML (INSERT, UPDATE, DELETE)
o DDL; restituisce il numero di righe coinvolte.
void setQuery Timeout(int seconds): Imposta un timeout.
Esempio (Slide 10): stat.executeQuery( ... ) e stat.executeUpdate( ... ).
○
○
3. Recupero dei Risultati:
executeQuery restituisce un ResultSet.
Iterare con result.next() (muove il cursore, restituisce false alla fine).
· Accedere ai valori delle colonne usando metodi getXxx() (es.
getString("nome_colonna"), getInt(indiceColonna)).
Esempio (Slide 12-13): Mostra l'iterazione e l'accesso ai dati per nome
e indice di colonna.
○
4. Disconnessione dal Server DBMS:
Connection.close(). Chiudere anche gli oggetti Statement e ResultSet,
tipicamente in un blocco finally.
○
6.
7. Servlet <- > DB (Slide 15-16):
○
Implementazione di un web service (es. Rubrica Telefonica) usando una
Servlet che si connette a un DB MySQL tramite JDBC.
o L'API web esposta può essere la stessa di una versione che usa una struttura
dati in memoria (come una Hashtable), ma la persistenza è gestita dal DB.
o Il DBMS gestisce la concorrenza.
o Osservazione: Un servlet-container può essere configurato con un
data-source per astrarre i dettagli di connessione al DB dal codice della
servlet.
8.
9. Driver JDBC per DBMS MySQL (Slide 17):
○
MySQL Connector/J è il driver JDBC ufficiale per MySQL.
○
Scaricabile come file JAR (es. da mysql.it o mysql.com).
○