Files
Org-Parking/DEPENDENCIES.md
2026-01-13 11:20:12 +01:00

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 (come uvloop) 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 libreria email-validator per 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 di email-validator o librerie di rete).