第一章:中间件基础
什么是中间件?
中间件是在每个请求被处理之前和每个响应返回之前执行的代码。它可以用于:
- 请求/响应日志记录
- 认证和授权
- CORS 处理
- 请求限流
- 错误处理
- 响应压缩
基础中间件
from fastapi import FastAPI, Request
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.responses import Response
import time
import logging
app = FastAPI()
logger = logging.getLogger(__name__)
# 使用装饰器创建中间件
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response
# 请求日志中间件
@app.middleware("http")
async def log_requests(request: Request, call_next):
logger.info(f"Request: {request.method} {request.url}")
response = await call_next(request)
logger.info(f"Response: {response.status_code}")
return response
2026/3/20大约 9 分钟