通过中间件获取请求和响应

获取请求和响应

自动加载路由

import importlib
from pathlib import Path
 
# 获取当前文件目录
routers_dir = Path(__file__).absolute().parent
 
# 遍历 routers 目录下的所有文件
routers = []
for file_path in list(routers_dir.glob("*.py")):
    file_name = file_path.stem
 
    # 忽略 __init__ 文件
    if file_name == "__init__":
        continue
 
    # 构建路由的完整路径
    module_path = f"app.routers.{file_name}"
    module = importlib.import_module(module_path)
 
    # 获取模块中的 router 变量,并添加到列表中
    router = getattr(module, "router")
    routers.append(router)
 

后台任务

后台任务通过 BackgroundTasks 实现,另外虽然函数参数传递,但是文档并不会显示相关信息。

from fastapi import BackgroundTasks, FastAPI
 
app = FastAPI()
 
def write_notification(email: str, message=""):
    with open("log.txt", mode="w") as email_file:
        content = f"notification for {email}: {message}"
        email_file.write(content)
 
 
@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(write_notification, email, message="some notification")
    return {"message": "Notification sent in the background"}

.add_task() 参数:

  • 任务函数
  • 参数
  • 关键字参数

关闭文档接口

参考 禁用文档

身份验证