Come usare il file .env in FastAPI

26 set 2023 2 min di lettura
Come usare il file .env in FastAPI
Indice dei contenuti

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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.