Using .env File in FastAPI

FastAPI 是一个用 Python 构建的现代工具,可以帮助您创建后端 API。像许多其他框架一样,FastAPI 可以使用环境变量,这是一种与代码分开管理设置的好方法。这使您的应用程序更易于管理和更安全。

为什么使用 .env 文件 ?

  • 将配置与应用程序代码分离
  • 避免在源代码中硬编码敏感信息
  • 根据环境 (开发 | 测试 | 生产等) 在不同配置之间轻松切换。

与其他 Python 框架类似,FastAPI 也使用 python-dotenv 包来加载 .env 文件到系统环境,然后在您的应用程序中使用它们。

安装依赖包

使用 pip 安装 python-dotenv

pip install fastapi[all] python-dotenv uvicorn

创建 .env 文件

在你的项目的根目录创建一个 .env 文件

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

3. 读取 .env 文件

你可以在应用程序开始时加载 .env 文件,请参阅下面的 Python 脚本,该脚本使用 dotenv 包中的 load_dotenv 函数从 .env 文件中加载变量并应用到系统环境变量,然后使用 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}

高级用法

(1) Using environments with FastAPI Config

为了进一步组织和类型化我们的配置,我们可以使用像 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,您的环境变量会自动转换为正确的类型,这使得处理配置更安全。

(2) Overriding configurations for testing

在编写测试时,您可能希望使用不同的配置。python-dotenv 库允许您指定 .env 文件的路径,因此您可以使用单独的 .env.test 文件进行测试。

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

我的开源项目

酷瓜云课堂-在线教育解决方案


鸠摩智首席音效师
475 声望9 粉丝

身强体健,龙精虎猛的活着。


引用和评论

0 条评论