Vai al contenuto principale

Tutorial FastAPI: Introduzione all'uso di FastAPI

Esplora il framework FastAPI e scopri come usarlo per creare API in Python
Aggiornato 3 giu 2026  · 13 min leggi

Le API (Application Programming Interface) sono la spina dorsale dell’architettura moderna perché permettono di creare applicazioni modulari e disaccoppiate. Questo significa che puoi sviluppare applicazioni in modo rapido e semplice, rendendole facili da mantenere e aggiornare. 

Le API sono fondamentali anche nel machine learning perché permettono a diverse applicazioni di condividere dati e collaborare, risparmiando tempo e fatica. Esistono molti framework diversi per creare API in Python. Alcuni dei più popolari sono Django, Flask e FastAPI. Questo tutorial approfondisce uno di questi framework: FastAPI.

Se vuoi approfondire l’argomento, ti consiglio questo corso: Deploying AI Into Production With FastAPI.

Che cos’è un’API?

API sta per Application Programming Interface. Un’API è un intermediario software che consente a due applicazioni di comunicare tra loro. Quando usi un’app sul tuo telefono, l’app si connette a Internet e invia dati a un server. Il server elabora i dati e li rinvia al tuo telefono. L’app sul telefono interpreta i dati e te li presenta in modo leggibile. 

Un’API è come un cameriere in un ristorante. Il cameriere prende l’ordine e lo porta in cucina. La cucina prepara il cibo e lo rimanda al cameriere. Il cameriere poi porta il piatto al tavolo. 

Allo stesso modo, un’API riceve una richiesta da un’applicazione e la invia a un server. Il server elabora la richiesta e rimanda i dati all’applicazione. L’applicazione poi interpreta i dati e li presenta all’utente.

Un semplice design di architettura API

Fonte immagine: https://www.techfunnel.com/wp-content/uploads/2021/07/api.png

Se vuoi saperne di più su pipeline di machine learning, API e MLOps, dai un’occhiata al nostro Tutorial su Machine Learning, Pipeline, Deployment e MLOps.

Che cos’è FastAPI

FastAPI è un web framework ad alte prestazioni per creare API con Python 3.7+ basato sui type hints standard di Python. Aiuta gli sviluppatori a costruire applicazioni in modo rapido ed efficiente. FastAPI è costruito sopra il web server Starlette e include funzionalità che semplificano lo sviluppo di applicazioni web, come la validazione automatica dei dati, la gestione degli errori e la documentazione interattiva delle API. 

In questa sezione vedremo singolarmente tutte queste funzionalità. Per prima cosa, diamo un’occhiata alle caratteristiche chiave evidenziate nella documentazione originale di FastAPI.

  • Performance: Paragonabile a NodeJS e al linguaggio Go.
  • Speed: Aumenta la velocità di sviluppo di 2-3 volte.
  • Easy: Ottimo supporto dell’editor. Completamento ovunque. Facile da imparare e usare.
  • Robust: Codice pronto per la produzione con documentazione interattiva automatica.
  • Basato su OpenAPI: Pienamente compatibile con OpenAPI e JSON Schema.

Installare FastAPI

FastAPI richiede Python 3.7+. Può essere installato con pip. Dovrai installare FastAPI e il server ASGI `uvicorn`.

``

# install fastapi

pip install fastapi




# install uvicorn
pip install uvicorn

``

Crea una semplice API

Passiamo subito a creare una semplicissima API di esempio. Io uso VS Code per implementarla, ma puoi usare qualunque editor preferisci.

```

from typing import Union

from fastapi import FastAPI




app = FastAPI()




@app.get("")

def read_root():

    return {"Hello": "World"}




@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}

```

(Esempio riprodotto dalla documentazione originale). Grazie a @tiangolo.

Ora, usando un terminale a riga di comando, esegui questa API con il seguente comando:

```

uvicorn main:app –reload

```

`main` è il nome del file Python e `app` è la variabile che contiene la classe FastAPI. Puoi chiamarli come vuoi. Una volta eseguito il comando, vedrai qualcosa di simile nel terminale:

Terminale dei comandi

Apri il link nel browser e, se vedi una pagina che mostra `Hello World,` significa che l’API è attiva e funzionante.

API in esecuzione su localhost nel browser

Immagine dell’autore

Congratulazioni per aver creato la tua prima API. 

Documentazione API interattiva

FastAPI genera uno "schema" con tutte le tue API usando lo standard OpenAPI per la definizione delle API. Uno "schema" è una definizione o descrizione di qualcosa. Non il codice che lo implementa, ma una descrizione astratta. Lo schema OpenAPI alimenta i due sistemi di documentazione interattiva inclusi in FastAPI.

Per vedere la documentazione, aggiungi semplicemente `/docs` all’URL (`http://127.0.0.1:8000/docs`). Questo link mostra la documentazione interattiva automatica delle API.

Documentazione automatizzata creata da FastAPI

Immagine dell’autore

Clicca sul pulsante `Try it out` in alto a destra per testare l’API.

Documentazione automatizzata creata da FastAPI 2

Immagine dell’autore

Puoi vedere che il body della risposta è un dizionario. Questa è la return della funzione `read_item` definita in `main.py`. Puoi anche vedere l’URL della richiesta `http://127.0.0.1:8000/items/1?q=orange`. `1` e `orange` erano i nostri input all’API.

In FastAPI è disponibile un’alternativa di documentazione interattiva automatica. Per vederla, vai su http://127.0.0.1:8000/redoc`. Si presenta così:

Documentazione automatizzata creata da FastAPI 3

Immagine dell’autore

Esempi più avanzati

Nella creazione di un’API, il "percorso" definisce la route o l’endpoint della richiesta. Tuttavia, c’è un’altra scelta da fare, ossia l’“Operazione”. La parola `operation` qui si riferisce a uno dei "metodi" HTTP. Usando uno (o più) di questi cosiddetti "metodi", puoi comunicare con ciascuno dei diversi percorsi supportati dal protocollo HTTP. In genere useresti:

  • POST: per creare dati.
  • GET: per leggere dati.
  • PUT: per aggiornare dati.
  • DELETE: per eliminare dati.
  • E qualche altro metodo avanzato 

FastAPI supporta tutti i metodi HTTP. 

Un altro aspetto fondamentale di questo framework è che FastAPI si basa sui type hints di Python. I type hints sono supportati da Python 3.6 e versioni successive. I type hints sono una sintassi specifica che consente di dichiarare il tipo di una variabile. 

Dichiarare i tipi delle variabili permette agli editor e ad altri strumenti di offrirti un supporto migliore. Vediamo un esempio avanzato.

Modificheremo il file `main.py` per includere una nuova richiesta `PUT` che accetterà più input di tipi di dato diversi. 

```

from typing import Union




from fastapi import FastAPI

from pydantic import BaseModel




app = FastAPI()




class Item(BaseModel):

    name: str

    price: float

    is_offer: Union[bool, None] = None




@app.get("")

def read_root():

    return {"Hello": "World"}




@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}




@app.put("/items/{item_id}")

def update_item(item_id: int, item: Item):

    return {"item_name": item.name, "item_id": item_id}

```

(Esempio riprodotto dalla documentazione originale). Grazie a @tiangolo.

La modifica:

È stato aggiunto un `put` che accetta due input. `item_id` è un intero e il tipo di `item` punta alla classe personalizzata `Item` creata ed erede di `BaseModel` di `pydantic`. La classe `Item` contiene tre attributi: `name`, `price`, `is_offer`, e hanno tutti tipi di dato diversi.

FastAPI controllerà: 

  • che `name` sia una `str`.
  • che `price` sia un `float`.
  • che `is_offer` sia un bool, se presente.

Il vantaggio di usare i type hints è che dichiari una sola volta i tipi dei parametri, del body, ecc. come parametri di funzione con Python standard (3.6+). Otterrai:

  • Supporto dell’editor, inclusi completamento automatico e controlli di tipo
  • Validazione dei dati
  • Conversione dei dati in input
  • Conversione dei dati in output
  • Errori facili da capire.

Confronto tra FastAPI, Django e Flask

Tutti e tre questi framework sono web framework Python che puoi usare per sviluppare applicazioni web. Ognuno ha punti di forza e debolezza.

Django è un framework completo che include tutto ciò che serve per iniziare, incluso un ORM integrato e un pannello di amministrazione. Può risultare un po’ impegnativo per i principianti, ma la sua documentazione completa lo rende facile da imparare.

Flask è un microframework leggero e facile da iniziare a usare. Non include tante funzionalità quante Django, ma è perfetto per progetti semplici.

FastAPI è un framework nuovo progettato per essere veloce e facile da usare. Include funzionalità come la validazione automatica dei dati e la documentazione. 

 

Django

Flask

FastAPI

Community

Grande. 

66K stelle su GitHub

Grande. 

61K stelle su GitHub

Grande. 

50K stelle su GitHub

Performance

Django è massiccio. Non è il massimo in termini di prestazioni.

Flask è un micro web framework. Va meglio di Django.

FastAPI è uno dei web framework più veloci, con supporto async nativo che ne aumenta l’efficienza. 

Supporto Async

Sì, con latenza limitata.

No. 

Richiede Asyncio

FastAPI fornisce supporto async nativo.

Facilità d’uso

Django è vasto e quindi un po’ complicato da imparare.

Flask è facile da imparare e piuttosto lineare da usare.

FastAPI è il più semplice dei tre.

Documentazione interattiva

Non interattiva

No

Sì (OpenAI, Redoc)

Verifica dei dati

No

No


Benchmark delle prestazioni di FastAPI

Secondo i risultati dei test eseguiti da techempower, FastAPI è superiore agli altri framework in termini di prestazioni complessive. 

Benchmark delle prestazioni delle API

Fonte: https://www.techempower.com/benchmarks/

Esempio: costruire una pipeline di machine learning end-to-end con PyCaret e fare il deploy con FastAPI 

In questa sezione costruiremo rapidamente una pipeline di machine learning e poi creeremo un’API per servire il modello. Useremo una libreria Python low-code, PyCaret, per creare la pipeline e l’API. PyCaret ha un’integrazione con FastAPI, che rende estremamente semplice creare e servire modelli di machine learning come API.

PyCaret

PyCaret è una libreria di machine learning open source e low-code in Python che automatizza i flussi di lavoro di ML. È uno strumento end-to-end per il machine learning e la gestione dei modelli che accelera in modo esponenziale il ciclo di sperimentazione e ti rende più produttivo.

```

pip install pycaret

```




```

import pycaret

pycaret.__version__

>>> 2.3.10

```

In questo esempio useremo il dataset `insurance`. È un caso di regressione per prevedere i costi sanitari in base a età, sesso, BMI e regione. 

```

from pycaret.datasets import get_data

data = get_data(‘insurance’)

```

Dataset di esempio

Immagine dell’autore

Successivamente inizializzeremo la funzione `setup` di pycaret. Questa funzione avvia l’esperimento in PyCaret e crea la pipeline di trasformazione in base a tutti i parametri passati nella funzione. 

`setup` deve essere eseguito per primo, prima di qualsiasi altra funzione. Richiede due parametri per funzionare: `data` e `target`. Tutti gli altri argomenti in `setup` sono opzionali. La funzione `setup` è responsabile del controllo di tutte le procedure di preprocessing dei dati. Consulta la documentazione di PyCaret per una panoramica completa di tutte le procedure di preprocessing supportate in PyCaret.

```

from pycaret.regression import *

s = setup(data, target = 'charges')

```

Output della funzione setup di PyCaret

Immagine dell’autore Output troncato.

Una volta terminato il setup, possiamo iniziare addestramento e selezione dei modelli con una sola riga di codice: `compare_models`. Tramite la cross-validation, questa funzione addestra e valuta le prestazioni dei modelli per tutti gli stimatori presenti nella libreria. Il risultato è una griglia di punteggi con le medie ottenute dalla cross-validation.

Preprocessing for Machine Learning in Python

Ti interessa imparare come preparare i dati puliti per il modeling? Segui il nostro corso Preprocessing for Machine Learning in Python.

Inizia ora
```

best = compare_models()

```

Output della funzione compare_models di PyCaret

Immagine dell’autore

In base a questo, il modello con le prestazioni migliori è il `Gradient Boosting Regressor`. Volendo, potremmo analizzare il modello tramite visualizzazioni e provare a migliorare le prestazioni con l’ottimizzazione degli iperparametri o con l’ensembling, ma non lo faremo in questo tutorial. 

Passiamo direttamente a costruire l’API del miglior modello per servire predizioni in produzione usando FastAPI. Ricorda, PyCaret ha un’integrazione con FastAPI, quindi può creare automaticamente una REST API dal modello tramite la funzione `create_api`.

```

create_api (best, 'insurance_prediction_model')

```

API creata con successo

Per eseguire questa API, apri il prompt dei comandi, vai nella cartella dove si trova il tuo Notebook ed esegui il seguente comando `python insurance_prediction_model.py`. 

Riga di comando

Vai su `http://127.0.0.1:8000/docs` e vedrai la stessa interfaccia già vista in questo tutorial

API su http:::127.0.0.1:8000:docs

Immagine dell’autore

API su http:::127.0.0.18000:docs

Immagine dell’autore

Puoi anche vedere la documentazione interattiva alternativa andando su `http://127.0.0.1:8000/redoc

API su http:::127.0.0.1:8000:docs3

Immagine dell’autore

Ricorda, sia la documentazione predefinita sia quella redoc sono alimentate dagli standard OpenAPI. 

Se vuoi vedere il file che PyCaret ha creato quando hai usato la funzione `create_api`, puoi trovarlo nella stessa cartella del tuo Notebook. Si presenta così:

```

import pandas as pd

from pycaret.regression import load_model, predict_model

from fastapi import FastAPI

import uvicorn




# Create the app

app = FastAPI()




# Load trained Pipeline

model = load_model('my_lr_api')




# Define predict function

@app.post('/predict')

def predict(age, sex, bmi, children, smoker, region):

    data = pd.DataFrame([[age, sex, bmi, children, smoker, region]])

    data.columns = ['age', 'sex', 'bmi', 'children', 'smoker', 'region']

    predictions = predict_model(model, data=data) 

    return {'prediction': list(predictions['Label'])}




if __name__ == '__main__':

    uvicorn.run(app, host='127.0.0.1', port=8000)




```

Conclusione

L’articolo ha discusso il concetto di API e perché vengono usate. Le API sono importanti nell’architettura moderna perché permettono a diversi programmi software di condividere dati e funzionalità. Questo rende possibile creare sistemi complessi più affidabili e facili da mantenere.

Abbiamo poi approfondito un framework relativamente nuovo in Python chiamato FastAPI. FastAPI è una soluzione pensata per essere facile da usare ed efficiente. È un’ottima opzione per gli sviluppatori che vogliono creare un’API in modo rapido e semplice.

Storico delle stelle GitHub - creato con star-history.com

Storico delle stelle GitHub - creato con star-history.com

Se vuoi anche imparare a creare una semplice API da un modello di machine learning in Python usando Flask, dai un’occhiata a questo tutorial semplice da seguire, Turning Machine Learning Models into APIs in Python.

Domande frequenti su FastAPI

FastAPI è asincrono?

FastAPI supporta il codice asincrono nativamente usando le parole chiave async/await di Python.

FastAPI è pronto per l’uso in produzione?

FastAPI è completamente pronto per la produzione, con un’ottima documentazione, supporto e un’interfaccia facile da usare.

In cosa FastAPI è diverso da Flask?

FastAPI supporta chiamate asincrone. È leggero, più veloce e più facile da imparare rispetto a Flask. Sia Flask sia FastAPI hanno community enormi.

FastAPI ha anche un server di sviluppo integrato?

No, FastAPI non ha un server di sviluppo integrato. Per quello devi usare `uvicorn`.

FastAPI è supportato su Python 2?

No, FastAPI è disponibile solo in Python 3.6+.

FastAPI è disponibile solo in Python?

FastAPI è più veloce del linguaggio di programmazione Go?

No. Secondo techempower, Golang Fiber è la 50ª API più veloce al mondo. FastAPI è al 183º posto.

FastAPI è compatibile con Pydantic?

FastAPI è pienamente compatibile con (e basato su) Pydantic.

Argomenti

Impara l’AI con questi corsi!

Corso

Efficient AI Model Training with PyTorch

4 h
1.5K
Riduci i tempi di training dei large language models con Accelerator e Trainer per il distributed training
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro