创作者: 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 章。
🌟 欢迎大家来观看!