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")
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。