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

Lezione 4: La sicurezza nei servizi RESTful

20/03/2026, ore 11:30 (2 ore)
Slides Restful Security

  • (4-1)
    Il ruolo della sicurezza nel design delle API RESTful
  • (4-2)
    Tecniche di sicurezza per API RESTful: Mutual TLS
  • (4-3)
    Tecniche di sicurezza per API RESTful: HTTP Basic Authentication
  • (4-4)
    Tecniche di sicurezza per API RESTful: Token-Based Authentication
  • (4-5)
    Il ruolo dei token di accesso nella sicurezza delle API
    link https://datatracker.ietf.org/doc/html/rfc7519
  • (4-6)
    Come scambiarsi il token di accesso: dai metodi rudimentali (query string, path) alla Bearer Authorization
  • (4-7)
    Generare i token di accesso: schemi di autenticazione
  • (4-8)
    Gestire la scadenza e il refresh dei token di accesso
  • (4-9)
    Esempio Realizzare la tecnica del login/logout in un servizio RESTful
  • (4-10)
    Tecniche di sicurezza per API RESTful: API Keys
  • (4-11)
    OAuth: un sistema di autenticazione basato sui token particolarmente adatto ai servizi
    link https://datatracker.ietf.org/doc/html/rfc6749
    link https://datatracker.ietf.org/doc/html/rfc6750
    link https://oauth.net/2
  • (4-12)
    I vantaggi di OAuth: nessuna memorizzazione delle credenziali e codici di autorizzazione con contesto
  • (4-13)
    Attori e ruoli in OAuth 2
  • (4-14)
    Token e codici usati da OAuth 2
  • (4-15)
    Il flusso di autorizzazione OAuth 2
  • (4-17)
    Esempio Il caso di studio catalog
    materiale REST_Specs