Diario delle Lezioni - A.A. 2025/2026
Lezione 1: Introduzione ai (RESTful) web services
27/02/2026, ore 11:30 (2 ore)
Slides WS-Rest
- (1-1)Presentazione del corso
- (1-2)Perché i servizi (web) sono un modo efficace di sviluppare software
- (1-3)La storia dei servizi (web) distribuiti: dalla RPC al RESTful
- (1-4)Presentazione degli argomenti: RESTful web services
- (1-5)Esempio I servizi RESTful come estensione delle applicazioni web standard
- (1-6)Esempio I servizi RESTful come elemento base delle applicazioni fortemente client side come le SPA (Angular, React, ecc.)
- (1-7)Esempio I servizi RESTful come elemento base delle applicazioni mobili
- (1-8)Presentazione degli argomenti: progettazione di servizi RESTful
- (1-9)Presentazione degli argomenti: implementazione di servizi RESTful (Java, PHP)
- (1-10)Presentazione degli argomenti: implementazione di client RESTful (Java, PHP, Javascript)
- (1-11)I Web services nel Web 2.0
- (1-12)Cosa sono i web services veramente?
- (1-13)Che ruolo giocano i web services nel web 2.0?
- (1-14)Esempio Analisi di servizi pubblicati su web dalla PA
- (1-15)Esempio Un esempio di veri web services: Amazon
- (1-16)Esempio Realizzare i servizi della PA come veri web services
- (1-17)I servizi web RESTful: quando usarli, e quali alternative esistono
Lezione 2: La semantica dei servizi RESTful 1
06/03/2026, ore 11:30 (2 ore)
Slides Restful
- (2-1)Caratteristiche di base di un servizio RESTful: protocolli, formati, metodi
- (2-2)Semantica di un servizio web RESTful: a quali tipi di applicazione si adatta meglio?
- (2-3)Struttura delle URL in un servizio RESTful
- (2-4)Mappare le risorse sulle URL: la struttura di base collection-item
- (2-5)Esempio Mappare strutture relazionali su URL RESTful
- (2-6)Operazioni CRUD via RESTful: il metodo GET
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET - (2-7)Esempio GET su collezioni: SELECT
- (2-8)Esempio GET su collezioni con query string: SELECT * WHERE
- (2-9)La codifica dei dati restituiti da una GET e gli header Accept/Content-Type
- (2-10)Il valore di ritorno delle GET su collezioni: lista di record o di sole chiavi?
- (2-11)Esempio GET su item: SELECT * WHERE id=...
- (2-12)Esempio GET su attributi: SELECT a WHERE id=...
- (2-13)
- (2-14)Operazioni CRUD via RESTful: il metodo PUT
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT - (2-15)Esempio PUT su item: UPDATE globale su uno specifico record
- (2-16)Il payload del metodo PUT e l'header Content-Type
- (2-17)PUT: stati HTTP di ritorno
- (2-18)Operazioni CRUD via RESTful: il metodo PATCH
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH - (2-19)Esempio PATCH su item: UPDATE parziale su uno specifico record
- (2-20)Estensione della semantica PUT in ambienti che non supportano la PATCH
Lezione 3: La semantica dei servizi RESTful 2
13/03/2026, ore 11:30 (2 ore)
Slides Restful
- (3-1)Esempio PUT su attributi: UPDATE di singoli attributi in uno specifico record
- (3-2)Esempio PUT su collezioni: sostituzione di un'intera collezione
- (3-3)Operazioni CRUD via RESTful: il metodo POST
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST - (3-4)Esempio POST su collezioni: INSERT di un nuovo record
- (3-5)Il payload del metodo POST e l'header Content-Type
- (3-6)POST: stati HTTP e valori di ritorno
- (3-7)Operazioni CRUD via RESTful: il metodo DELETE
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE - (3-8)Esempio DELETE su item: DELETE di un record specifico
- (3-9)Esempio DELETE su collezioni: svuotamento di una tabella
- (3-10)DELETE: stati HTTP di ritorno
- (3-11)Altri metodi HTTP: HEAD, OPTIONS
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS - (3-12)Esempio HEAD su risorsa: controllo dei metadati
- (3-13)Esempio HEAD usato per il caching delle risorse
- (3-14)Esempio OPTIONS su risorsa: controllo sui metodi supportati
- (3-15)Il problema della same-origin-policy per i servizi
link https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy - (3-16)Permettere l'accesso ai propri servizi RESTful dall'esterno (del loro dominio): CORS
link https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS - (3-17)OPTIONS e CORS: la preflight delle risorse
link https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request - (3-18)Operazioni di tipo RMI via RESTful
- (3-19)Specificare un oggetto (contesto) e un metodo da invocare tramite una URL
- (3-20)Esempio Il metodo POST utilizzato per effettuare una RMI
- (3-21)Codifica dei parametri e del valore di ritorno di un metodo invocato tramite POST
- (3-22)Payload e risultato del metodo POST: header Accept e Content-Type
- (3-23)POST per RMI: stati HTTP di ritorno
- (3-24)Esempio Operazioni di tipo RMI via RESTful: usare GET per metodi di lettura (attributi calcolati)
- (3-25)Esempio Usare il metodo POST come alternativa alla GET su collezione per definire filtri complessi