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 章。

🌟 欢迎大家来观看!

相关推荐
chaors8 小时前
DeepResearchSystem 0x08:KB 知识记忆
langchain·agent·ai编程
程序员黑豆10 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
金伟API102411 小时前
如何从零打造一个极简的DeepSeek-R1大模型
人工智能·ai
飞哥数智坊12 小时前
实测7套 Code Agent组合:最终效果,真不只取决于模型
ai编程
东小西13 小时前
番外篇二:《不到十行代码,我用ReactAgen搭了个会自己调工具的 Agent》
openai·ai编程
fthux13 小时前
装闭 RenoPit 源码解析(05):FastAPI与Celery如何执行AI装修分析
人工智能·ai·开源·github·open source·renopit
NocoBase15 小时前
如何用 AI 和 NocoBase 搭建一套可投入生产的 CRM
低代码·ai·开源·无代码·无代码开发平台
avi911115 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线
kyriewen15 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程
东小西17 小时前
番外篇一:《Spring AI Alibaba 到底是啥?一张图理清两者关系》
openai·ai编程