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

🌟 欢迎大家来观看!

相关推荐
Ai-_Man10 分钟前
您您这可以把Mistral AI的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。
人工智能·ai·小程序·电脑
菩提小狗12 分钟前
每日极客日报 · 2026年09月21日
ai·开源·极客日报·it热点·技术资讯
余槐i25 分钟前
拆解 Agent 核心原理|从零动手实现简易 AI 智能体(三)
人工智能·python·fastapi·ai agent
codigger25 分钟前
我用 AI 做完整项目后,总结出一套把需求钉死的工作流
ai·程序员·编程·ai编程·#人工智能
程序员清风44 分钟前
系统架构设计:模型服务、业务服务与知识库如何拆分
人工智能·ai·架构·aigc
jianpeng的工程笔记1 小时前
Qwen-Image-2.1 图像编辑拆解:从透明改字到多图合成
人工智能·qwen·图像生成·comfyui
挖掘狂人1 小时前
用 AI 写代码别只甩一句指令,这套工作流救过我的项目
程序员·ai编程·codebuddy
极客互动API1 小时前
极客互动-企业微信基于外部API接口实现AI客服自动接管外部联系人消息收发
java·微信·企业微信·ai编程·rpa
智行合一科技1 小时前
字节跳动将飞书并入豆包:一场“工具让位AI”的战略重构
ai·字节跳动·豆包
qq_452396231 小时前
第二篇:《Codex vs Copilot vs Claude Code:AI 编程工具选型指南》
ai