Введение
FastAPI — это современная веб-инфраструктура для создания API с помощью Python 3.7+ на основе стандартных предложений типов Python. Как и во многих других платформах, в FastAPI предусмотрены средства для работы с переменными среды для управления конфигурацией. Хранение конфигураций в файле.env — распространенная практика, которая помогает отделить конфигурацию от кода приложения, упрощая управление и повышая безопасность.
В этой статье мы рассмотрим, как интегрировать и использовать файлы.env в приложении FastAPI.
Зачем использовать файл.env?
- Разделение аспектов: храните конфигурации отдельно от кода приложения.
- Безопасность: избегайте жесткого кодирования конфиденциальной информации в исходный код.
- Портативность: легко переключаться между различными конфигурациями в зависимости от вашей среды (разработка, тестирование, производство и т. д.).
Начало работы с.env в FastAPI
Подобно другим платформам Python, FastAPI также использует пакет python-dotenv для загрузки файлов `.env` в системную среду. Затем используйте их в своем приложении.
Установите необходимые пакеты:
Для работы с файлами `.env` мы будем использовать библиотеку python-dotenv. Установите его с помощью pip:
pip install fastapi[all] python-dotenv uvicorn
Создайте файл.env:
Создайте файл `.env` в корне вашего проекта. Например:
DB_URL=postgresql://username:password@localhost:5432/mydatabase
SECRET_KEY=mysecretkey
DEBUG=True
Прочтите.env в FastAPI:
Вы можете загрузить файл `.env` в начале приложения. См. приведенный ниже скрипт Python, который использует функцию load_dotenv из пакета dotenv для загрузки переменных из файла .env в системную среду. После загрузки файла.env код извлекает определенные переменные среды, такие как «DB_URL», «SECRET_KEY» и «DEBUG», с помощью функции 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"
Используйте загруженные переменные среды:
Теперь, когда переменные загружены, вы можете использовать их в своем приложении.
@app.get("/")
def read_root():
return {"DB_URL": DB_URL, "Debug Mode": DEBUG}
Расширенное использование
Использование сред с конфигурацией FastAPI:
Для дальнейшей организации и контроля типов наших конфигураций мы можем использовать такой пакет, как pydantic:
pip install pydantic
Далее определите шаблон конфигурации:
from pydantic import BaseSettings
class Settings(BaseSettings):
DB_URL: str
SECRET_KEY: str
DEBUG: bool = False
class Config:
env_file = ".env"
Загрузить конфигурации:
settings = Settings()
@app.get("/config/")
def read_config():
return {"DB_URL": settings.DB_URL, "Debug Mode": settings.DEBUG}
С помощью pydantic переменные среды автоматически преобразуются в правильные типы, что делает управление конфигурацией более безопасным.
Переопределить конфигурации для тестирования
При написании тестов вы можете захотеть использовать разные конфигурации. Библиотека python-dotenv позволяет вам указать путь к вашему файлу.env, поэтому вы можете использовать отдельный файл `.env.test` для проверки:
# For testing, load a different.env file
load_dotenv(".env.test")
Заключение
Использование файла .env в приложении FastAPI упрощает управление конфигурацией, повышает безопасность и разделение задач. С помощью дополнительных инструментов, таких как pydantic, вы можете применять проверку типов в конфигурациях, чтобы заранее обнаружить потенциальные проблемы. Независимо от того, занимаетесь ли вы локальной разработкой, развертыванием в рабочей среде или запуском тестов, использование файлов.env упрощает управление настройками, специфичными для среды.