FastAPI 全栈后端(六):中间件与依赖注入

创作者: Yardon | GitHub: github.com/YardonYan | 版本: v1.0 |



中间件是什么

中间件是请求到达路由之前 和响应返回客户端之后的执行层。比喻:HTTP 请求像快递,中间件就是快递沿途的检查站------每个检查站都可以:

  • 修改快递(加/改 Header)
  • 拒收快递(直接返回 403)
  • 记录快递信息(打日志)
python 复制代码
from fastapi import Request, Response
from fastapi.middleware.base import BaseHTTPMiddleware

class LogMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next):
        print(f"→ {request.method} {request.url}")
        response: Response = await call_next(request)
        print(f"← {response.status_code}")
        return response

CORS 中间件

前后端分离必配,否则浏览器会拦截跨域请求。

python 复制代码
from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://glimmerai.top", "http://localhost:5173"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

依赖注入系统详解

FastAPI 的依赖注入是它最强大的特性之一。

python 复制代码
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

def get_current_user(token: str = Depends(oauth2_scheme)):
    return verify_token(token)

@app.get("/me")
async def read_me(
    db: Session = Depends(get_db),
    user: User = Depends(get_current_user),
):
    return user

本章小结

特性 用途
中间件 全局请求/响应处理(CORS、日志、限流)
依赖注入 复用逻辑、权限控制、数据库会话管理
全局依赖 应用到所有路由
局部依赖 只应用到特定路由

下一章:测试与文档------用 pytest 保证质量,用 OpenAPI 自动生成文档。


📌 创作者: Yardon | 🏠 个人网站: GlimmerAI.top

📖 本章是「FastAPI 全栈后端」系列的第 6 章。

🌟 欢迎大家来观看!

相关推荐
ServBay18 分钟前
Claude Fable 5.5 测试曝光,但它在悄悄给你打分
后端·ai编程·claude
孟健1 小时前
Claude Code 同需求写两版对比:装不装 frontend-design 差多远?
前端·ai编程·claude
OpsEye2 小时前
大模型 Token 计量不准,是什么原因,怎么解决??
javascript·ai编程
小七-七牛开发者2 小时前
Agent 支线知识:Personal Agent 如何跨应用完成任务?
ai·agent·工具调用·aiagent·mcp
西安小哥2 小时前
把 200K 上下文跑满之后,我给编码智能体立了四条规矩
aigc·ai编程
西安小哥3 小时前
让大模型稳定输出 JSON,我换了三次方案,最后败给一个土办法
ai编程
ryn483983 小时前
01 一个功能模块,怎么分层才不乱
前端·ai编程·claude
文谦南宁AI普工3 小时前
CVSS 10.0 沙箱逃逸 + 假扩展后门:给 Agent 开发者的供应链与沙箱安全复盘(附可跑的配置审计器)
安全·agent·ai编程
vivo互联网技术3 小时前
把 Agent 的判断与行动变成可恢复的软件事实|KDC 系列 工程篇
架构·agent·ai编程
T_Wizard3 小时前
后端转 AI 应用开发,我先把这 12 个名词理清了:一张图看懂架构、RAG、Tool Calling 与 MCP
java·ai编程