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.
Ver más12 páginas
Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
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).
○