Utilizzo del file .env in FastAPI

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 interessi: Mantieni le configurazioni separate dal codice dell’applicazione.
  • Sicurezza: evitare di codificare 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 il caricamento `.env` file nell’ambiente di sistema. Quindi usali nell’applicazione.

1. Installa i pacchetti richiesti:

Lavorare con `.env` file, useremo il file python-dotenv biblioteca. Installalo con pip:

pip install fastapi(all) python-dotenv uvicorn 

2. Crea un file .env:

Creare un `.env` file nella radice del tuo progetto. Per esempio:


DB_URL=postgresql://username:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey
DEBUG=True

3. Leggi .env in FastAPI:

Puoi caricare il `.env` file all’inizio della domanda. Vedi lo script Python di seguito che utilizza `carico_dotenv` dal pacchetto dotenv per caricare le variabili dal file `.env` file 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 il comando os.getenv funzione.


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"

4. 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:

1. Utilizzo di ambienti con FastAPI Config:

Per organizzare ulteriormente e controllare il tipo delle nostre configurazioni, possiamo utilizzare un pacchetto come pidantico:

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.

2. Sovrascrivere le configurazioni per i test:

Quando scrivi i test, potresti voler utilizzare configurazioni diverse. IL python-dotenv libreria ti consente di specificare un percorso per il tuo file .env, in modo da poter utilizzare un file separato `.env.test` file per il test:


# For testing, load a different .env file
load_dotenv(".env.test")

Conclusione

Usare un .env file 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.

Exit mobile version