Introducción
FastAPI es un marco web moderno para crear API con Python 3.7+ basado en sugerencias de tipo estándar de Python. Como muchos otros marcos, FastAPI tiene disposiciones para trabajar con variables de entorno para gestionar la configuración. Almacenar configuraciones en un archivo.env es una práctica común que ayuda a separar la configuración del código de la aplicación, lo que hace que sea más fácil de administrar y más seguro.
En este artículo exploraremos cómo integrar y usar archivos.env en una aplicación FastAPI.
¿Por qué utilizar un archivo.env?
- Separación de aspectos: Mantenga las configuraciones separadas del código de la aplicación.
- Seguridad: evite codificar información confidencial en el código fuente.
- Portabilidad: cambie fácilmente entre diferentes configuraciones según su entorno (desarrollo, pruebas, producción, etc.).
Comenzando con.env en FastAPI
Al igual que otros marcos de Python, FastAPI también utiliza el paquete python-dotenv para cargar archivos `.env` en el entorno del sistema. Luego úselos en la aplicación.
Instale los paquetes necesarios:
Para trabajar con archivos `.env`, usaremos la biblioteca python-dotenv. Instálalo con pip:
pip install fastapi[all] python-dotenv uvicorn
Cree un archivo.env:
Cree un archivo `.env` en la raíz de su proyecto. Por ejemplo:
DB_URL=postgresql://username:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey
DEBUG=True
Lea.env en FastAPI:
Puede cargar el archivo `.env` al comienzo de la aplicación. Consulte el script de Python a continuación que utiliza la función `load_dotenv` del paquete dotenv para cargar variables del archivo `.env` en el entorno del sistema. Después de cargar el archivo.env, el código recupera variables de entorno específicas como "DB_URL", "SECRET_KEY" y "DEBUG" utilizando la función 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"
Utilice las variables de entorno cargadas:
Ahora que las variables están cargadas, puedes usarlas en tu aplicación.
@app.get("/")
def read_root():
return {"DB_URL": DB_URL, "Debug Mode": DEBUG}
Uso avanzado
Uso de entornos con FastAPI Config:
Para organizar y controlar aún más nuestras configuraciones, podemos usar un paquete como pydantic:
pip install pydantic
A continuación, defina una plantilla de configuración:
from pydantic import BaseSettings
class Settings(BaseSettings):
DB_URL: str
SECRET_KEY: str
DEBUG: bool = False
class Config:
env_file = ".env"
Cargar configuraciones:
settings = Settings()
@app.get("/config/")
def read_config():
return {"DB_URL": settings.DB_URL, "Debug Mode": settings.DEBUG}
Con pydantic, las variables de entorno se convierten automáticamente a los tipos correctos, lo que hace que la gestión de la configuración sea más segura.
Anular configuraciones para pruebas
Al escribir pruebas, es posible que desee utilizar configuraciones diferentes. La biblioteca python-dotenv le permite especificar una ruta a su archivo.env, por lo que puede usar un archivo `.env.test` separado para probar:
# For testing, load a different.env file
load_dotenv(".env.test")
Conclusión
El uso de un archivo .env en una aplicación FastAPI simplifica la gestión de la configuración, mejorando la seguridad y la separación de preocupaciones. Con herramientas adicionales como pydantic, puede imponer la verificación de tipos en las configuraciones para detectar problemas potenciales de manera temprana. Ya sea que esté desarrollando localmente, implementando en producción o ejecutando pruebas, aprovechar los archivos.env facilita la administración de configuraciones específicas del entorno.