2.8 KiB
2.8 KiB
Spiegazione delle Dipendenze del Progetto
Questo documento spiega il motivo per cui ogni libreria elencata nel file requirements.txt è necessaria per il funzionamento dell'applicazione.
Librerie Principali
1. Framework e Server Web
fastapi: È il cuore dell'applicazione. Si tratta di un framework web moderno e veloce per costruire API con Python. Gestisce le richieste HTTP, il routing (gli URL) e la validazione dei dati.uvicorn[standard]: È il server ASGI necessario per eseguire l'applicazione FastAPI. FastAPI da solo non può girare; ha bisogno di un server come Uvicorn per accettare le connessioni dai client (browser, altre app). La versione[standard]include dipendenze extra per migliorare le prestazioni (comeuvloop) e gestire meglio i protocolli web.
2. Database e Dati
sqlalchemy: È l'ORM (Object-Relational Mapper) utilizzato per interagire con il database. Permette di scrivere codice Python per creare, leggere, aggiornare ed eliminare dati nel database invece di scrivere SQL puro.pydantic[email]: Usato per la validazione dei dati. Assicura che i dati inviati all'API (come i dati di registrazione utente) siano nel formato corretto. L'extra[email]include la libreriaemail-validatorper verificare che gli indirizzi email siano validi.pydantic-settings: Un'estensione di Pydantic specifica per la gestione delle configurazioni. Permette di leggere le impostazioni da variabili d'ambiente in modo sicuro e tipizzato.
3. Autenticazione e Sicurezza
python-jose[cryptography]: Serve per gestire i JSON Web Tokens (JWT). È fondamentale per il sistema di login, permettendo di creare token sicuri per identificare gli utenti autenticati.bcrypt: Una libreria per l'hashing delle password. È essenziale per la sicurezza, poiché permette di salvare le password nel database in modo criptato e non in chiaro.python-multipart: Necessario per supportare l'upload di form data. FastAPI lo richiede specificamente per gestire l'autenticazione OAuth2 (il login tramite form username/password).
4. Utilità e Configurazioni
python-dotenv: Permette all'applicazione di leggere le variabili d'configurazione da un file.env. È molto utile durante lo sviluppo per gestire segreti e impostazioni locali.slowapi: Una libreria per implementare il "Rate Limiting". Serve a proteggere l'API da un numero eccessivo di richieste in breve tempo (ad esempio, per prevenire attacchi di forza bruta o abusi).
5. Dipendenze Indirette o Specifiche
email-validator: Richiesto da Pydantic per la validazione delle email.idna: Supporto per nomi di dominio internazionalizzati (spesso una dipendenza diemail-validatoro librerie di rete).