Diario delle Lezioni - A.A. 2024/2025

Lezione 1: Introduzione ai (RESTful) web services

28/02/2025, 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

07/03/2025, 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 collezioni: usare la query string per simulare la clausola LIMIT
  • (2-12)

Lezione 3: La semantica dei servizi RESTful 2

14/03/2025, ore 11:30 (2 ore)
Slides Restful

Lezione 4: La sicurezza nei servizi RESTful

21/03/2025, ore 11:30 (2 ore)

Lezione 5: Progettazione di un servizio RESTful

28/03/2025, ore 11:30 (2 ore)

  • (5-1)
    Esempio Il caso di studio events
    materiale REST_Specs
  • (5-2)
    Introduzione al formato JSON
    link https://www.json.org
  • (5-3)
    Definire le strutture JSON necessarie a un servizio (o ereditarle da codice!)
  • (5-4)
    Identificare il pattern collection-item all'interno delle API
  • (5-5)
    Definire una struttura di URL coerente con le API
  • (5-6)
    Fuori dal pattern: quando violare la semantica standard RESTful ci aiuta a essere più efficienti
  • (5-7)
    Mappare metodi e payload sulle URL
  • (5-8)
    Gestire i binari in maniera corretta ed efficace
  • (5-9)
    Esempio La RESTful API per il caso di studio events
    materiale REST_Specs_RESTful
  • (5-10)
    Introduzione a JSON Schema

Lezione 6: JSON Schema

04/04/2025, ore 11:30 (2 ore)
Slides JSONSchema

  • (6-1)
    JSON Schema: struttura base e annotazioni
    link https://json-schema.org/specification.html
  • (6-2)
    JSON Schema: significato della schema vuoto e tecnica della modellazione per restrizioni
  • (6-3)
    JSON Schema: i tipi di dato
  • (6-4)
    JSON Schema: tipo stringa e relativi vincoli
  • (6-5)
    JSON Schema: tipi numerici e relativi vincoli
  • (6-6)
    JSON Schema: tipo oggetto e specifica delle proprietà
  • (6-7)
    JSON Schema: vincoli del tipo oggetto
  • (6-8)
    JSON Schema: tipo array e relativi vincoli
  • (6-9)
    JSON Schema: enumerazioni
  • (6-10)
    JSON Schema: composizione di schemi (allOf, anyOf, oneOf, not)
  • (6-11)
    JSON Schema: riferimenti a schemi e modularizzazione (proprietà $ref)
  • (6-12)
    Esempio La struttura dati evento definita con JSON Schema
    materiale Event_Object.json
    materiale Event_Object_Schema.json
  • (6-13)
    Il (meta) linguaggio YAML
    link https://yaml.org/spec
  • (6-14)
    Relazioni tra YAML e JSON
  • (6-15)
    La sintassi YAML: scalari, oggetti e array

Lezione 7: OpenAPI /1

11/04/2025, ore 11:30 (2 ore)
Slides OpenAPI

  • (7-1)
    Presentazione di OpenAPI 3
  • (7-2)
    Tool e specifiche OpenAPI reperibili online
    link https://www.openapis.org/
    link https://swagger.io/tools/open-source/
  • (7-3)
    OpenAPI: struttura di base
  • (7-4)
    Esempio Usare lo Swagger editor per creare una specifica OpenAPI
    link https://editor-next.swagger.io/
  • (7-5)
    OpenAPI: oggetto info
  • (7-6)
    OpenAPI: oggetto tags
  • (7-7)
    OpenAPI: oggetto externalDocs
  • (7-8)
    OpenAPI: servers
  • (7-9)
    OpenAPI: fattorizzazione della specifica e oggetto components
  • (7-10)
    OpenAPI: componenti di tipo schema
  • (7-11)
    OpenAPI: componenti di tipo parameter
  • (7-12)
    Esempio La specifica del servizio RESTful events con OpenAPI 3: struttura base, schemi e parametri