Configurazione di un progetto FastAPI e primo endpoint
Installi FastAPI, crei un progetto e scriva il suo primo endpoint GET.
Configurazione di un progetto FastAPI e primo endpoint è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
Che cos'è FastAPI?
FastAPI è un moderno framework web Python per creare API REST. Fornisce automaticamente la documentazione OpenAPI, modelli di richiesta e risposta verificati in base ai tipi tramite Pydantic e prestazioni native asincrone.
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, FastAPI"}Avvio del server
Esegua il server con uvicorn. Il flag --reload lo riavvia automaticamente quando il codice cambia durante lo sviluppo.
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health(): return {"status": "ok"}
# Terminal:
# uvicorn main:app --reload
# → http://127.0.0.1:8000
# → http://127.0.0.1:8000/docs (Swagger UI)Metodi HTTP
Decori le funzioni delle route con @app.get, @app.post, @app.put, @app.delete oppure @app.patch.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(): return []
@app.post("/items")
def create_item(): return {"id": 1}
@app.delete("/items/{item_id}")
def delete_item(item_id: int): return {"deleted": item_id}Parametri del percorso
Dichiari i parametri del percorso nella stringa della route con {name} e come argomenti della funzione con annotazioni di tipo.
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id, "name": "Alice"}
# GET /users/42 → {"user_id": 42, "name": "Alice"}Parametri di query
I parametri della funzione che non compaiono nel percorso diventano parametri di query.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
return {"skip": skip, "limit": limit, "q": q}
# GET /items?skip=5&limit=20&q=searchRequest body Pydantic
Utilizzi un BaseModel Pydantic come tipo del parametro per dichiarare e convalidare un request body JSON.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool = True
@app.post("/items")
def create_item(item: Item):
return {"received": item.model_dump()}Errori di validazione Pydantic
Se il request body non corrisponde allo schema, FastAPI restituisce automaticamente un errore 422 Unprocessable Entity con un messaggio dettagliato.
# POST /items with body {"name": 123}
# → HTTP 422 Unprocessable Entity
# {
# "detail": [
# {
# "type": "string_type",
# "loc": ["body","name"],
# "msg": "Input should be a valid string"
# }
# ]
# }Modelli di risposta
Utilizzi response_model= per dichiarare ciò che l'endpoint restituisce. FastAPI convalida la risposta ed esclude i campi aggiuntivi.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserOut(BaseModel):
id: int
name: str
@app.get("/users/{uid}", response_model=UserOut)
def get_user(uid: int):
return {"id": uid, "name": "Alice", "password": "secret"} # password filtered outCodici di stato
Imposti il codice di stato predefinito per le risposte positive con status_code=. Importi i codici comuni da fastapi.status.
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item():
return {"id": 1}
# HTTP 201 Created is returned on successHTTPException
Sollevi HTTPException per restituire una risposta di errore con un codice di stato e un messaggio dettagliato personalizzati.
from fastapi import FastAPI, HTTPException
app = FastAPI()
fake_db = {1: "Alice"}
@app.get("/users/{uid}")
def get_user(uid: int):
if uid not in fake_db:
raise HTTPException(status_code=404, detail="User not found")
return {"name": fake_db[uid]}Documentazione automatica
FastAPI genera automaticamente Swagger UI all'indirizzo /docs e ReDoc all'indirizzo /redoc a partire dalle annotazioni delle route.
# After starting with uvicorn:
# http://localhost:8000/docs — Swagger UI (try the API live)
# http://localhost:8000/redoc — ReDoc (clean docs view)
# http://localhost:8000/openapi.json — raw OpenAPI schemaVerifica rapida
Come si dichiara in FastAPI un parametro obbligatorio del request body JSON?
Riepilogo
Le route FastAPI sono funzioni decorate: i parametri del percorso si trovano nell'URL, i parametri di query sono argomenti tipizzati e i request body sono modelli Pydantic. Sollevi HTTPException per gli errori. Swagger UI viene generata automaticamente all'indirizzo /docs.
Domande Frequenti
La lezione «Configurazione di un progetto FastAPI e primo endpoint» è gratuita?
Sì — il testo completo di «Configurazione di un progetto FastAPI e primo endpoint» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Configurazione di un progetto FastAPI e primo endpoint»?
Installi FastAPI, crei un progetto e scriva il suo primo endpoint GET. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Configurazione di un progetto FastAPI e primo endpoint»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione di un progetto FastAPI e primo endpoint
- Parametri del percorso, parametri query e body delle richieste
- Dependency injection e autenticazione
- Endpoint asincroni e integrazione con il database