FastAPI: API Python ad alte prestazioni, per design

Sebastián Ramírez crea FastAPI basandosi su type hint Python, Starlette (ASGI) e Pydantic, con documentazione OpenAPI automatica, validazione runtime e supporto async nativo.

Open SourceWeb Open SourceFastAPIPythonAPIRESTAsyncASGI

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

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi