Introduzione
FastAPI è un framework Web moderno per la creazione di API con Python 3.7+ basato su suggerimenti di tipo Python standard. Come molti altri framework, FastAPI prevede disposizioni per lavorare con variabili di ambiente per gestire la configurazione. L'archiviazione delle configurazioni in un file .env è una pratica comune che aiuta a separare la configurazione dal codice dell'applicazione, rendendola più facile da gestire e più sicura.
In questo articolo esploreremo come integrare e utilizzare i file .env in un'applicazione FastAPI.
Perché utilizzare un file .env?
- Separazione degli aspetti : mantenere le configurazioni separate dal codice dell'applicazione.
- Sicurezza : evitare l'hardcoding di informazioni sensibili nel codice sorgente.
- Portabilità : passa facilmente tra diverse configurazioni in base all'ambiente (sviluppo, test, produzione, ecc.).
Iniziare con .env in FastAPI
Similmente ad altri framework Python, anche FastAPI utilizza il pacchetto python-dotenv per caricare file `.env` nell'ambiente di sistema. Quindi usali nell'applicazione.
Installa i pacchetti richiesti:
Per lavorare con i file `.env` , utilizzeremo la libreria python-dotenv . Installalo con pip:
pip install fastapi[all] python-dotenv uvicorn
Crea un file .env:
Crea un file `.env` nella radice del tuo progetto. Per esempio:
DB_URL=postgresql://username:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey
DEBUG=True
Leggi .env in FastAPI:
Puoi caricare il file `.env` all'inizio dell'applicazione. Vedi lo script Python di seguito che utilizza la funzione `load_dotenv` dal pacchetto dotenv per caricare le variabili dal file `.env` nell'ambiente del sistema. Dopo aver caricato il file .env, il codice recupera variabili di ambiente specifiche come "DB_URL", "SECRET_KEY" e "DEBUG" utilizzando la funzione os.getenv .
from fastapi import FastAPI
import os
from dotenv import load_dotenv
app = FastAPI()
# Load .env file
load_dotenv()
DB_URL = os.getenv("DB_URL")
SECRET_KEY = os.getenv("SECRET_KEY")
DEBUG = os.getenv("DEBUG") == "True"
Utilizzare le variabili di ambiente caricate:
Ora che le variabili sono caricate, puoi usarle nella tua applicazione.
@app.get("/")
def read_root():
return {"DB_URL": DB_URL, "Debug Mode": DEBUG}
Utilizzo avanzato
Utilizzo di ambienti con FastAPI Config:
Per organizzare ulteriormente e controllare il tipo delle nostre configurazioni, possiamo utilizzare un pacchetto come pydantic :
pip install pydantic
Quindi, definire un modello di configurazione:
from pydantic import BaseSettings
class Settings(BaseSettings):
DB_URL: str
SECRET_KEY: str
DEBUG: bool = False
class Config:
env_file = ".env"
Carica le configurazioni:
settings = Settings()
@app.get("/config/")
def read_config():
return {"DB_URL": settings.DB_URL, "Debug Mode": settings.DEBUG}
Con pydantic, le variabili di ambiente vengono automaticamente convertite nei tipi corretti, il che rende la gestione delle configurazioni più sicura.
Sovrascrivere le configurazioni per i test
Quando scrivi i test, potresti voler utilizzare configurazioni diverse. La libreria python-dotenv ti consente di specificare un percorso per il tuo file .env, quindi puoi utilizzare un file `.env.test` separato per testare:
# For testing, load a different .env file
load_dotenv(".env.test")
Conclusione
L'utilizzo di un file .env in un'applicazione FastAPI semplifica la gestione della configurazione, migliorando la sicurezza e la separazione delle preoccupazioni. Con strumenti aggiuntivi come pydantic, puoi imporre il controllo del tipo sulle configurazioni per individuare tempestivamente potenziali problemi. Che tu stia sviluppando localmente, distribuendo in produzione o eseguendo test, sfruttare i file .env semplifica la gestione delle impostazioni specifiche dell'ambiente.