Python veloce, senza compromessi
I framework web Python nel 2018 si dividono tra due poli. Da un lato Django e Flask — maturi, con ecosistemi ampi, ma basati su WSGI, un’interfaccia sincrona che gestisce una richiesta alla volta per worker. Dall’altro framework asincroni come Tornado e Sanic che offrono performance superiori ma richiedono più codice boilerplate e offrono meno struttura. Nessuno dei due poli sfrutta appieno una delle aggiunte più significative al linguaggio: i type hint, introdotti con Python 3.5.
FastAPI, creato da Sebastián Ramírez, è progettato da zero attorno ai type hint di Python, utilizzandoli non come semplice documentazione ma come meccanismo operativo per validazione, serializzazione e generazione automatica di documentazione.
Type hint come contratto
In FastAPI, i type hint definiscono il contratto dell’API. Una funzione che dichiara un parametro item: Item — dove Item è un modello Pydantic — ottiene automaticamente: validazione dei dati in input (con errori strutturati in caso di dati non conformi), serializzazione della risposta, documentazione nell’interfaccia OpenAPI. Lo sviluppatore scrive il tipo una sola volta e il framework ne estrae tre funzionalità.
Pydantic gestisce la validazione a runtime: converte i dati in ingresso nei tipi dichiarati, verifica i vincoli (lunghezza, range, pattern) e restituisce errori dettagliati in formato JSON. Il risultato è che errori che in altri framework emergerebbero in produzione vengono intercettati alla prima richiesta.
Starlette e async nativo
FastAPI si appoggia su Starlette, un framework ASGI (Asynchronous Server Gateway Interface) ad alte prestazioni. ASGI è il successore asincrono di WSGI: supporta async/await nativamente, permettendo a un singolo processo di gestire migliaia di connessioni concorrenti senza thread. Le operazioni di I/O — chiamate HTTP, query a database, letture da file — non bloccano il processo.
Le performance risultanti sono comparabili a quelle di framework scritti in Go e Node.js, secondo i benchmark disponibili, mantenendo la produttività e leggibilità del codice Python.
Documentazione automatica
FastAPI genera automaticamente documentazione interattiva in due formati: Swagger UI e ReDoc, entrambi derivati dalla specifica OpenAPI prodotta analizzando i type hint. La documentazione è sempre sincronizzata con il codice, perché ne è una derivazione diretta. Il framework è rilasciato sotto licenza MIT.
Link: fastapi.tiangolo.com
