中间件(Middleware)是 FastAPI 中的一项强大功能,它允许你在请求到达应用程序之前或响应离开应用程序之后,执行一些通用的操作。中间件可以用于添加全局的行为,例如日志记录、身份验证、异常处理等。

以下是一个简单的使用中间件的 FastAPI 示例:
from fastapi import FastAPI, HTTPException, Depends
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

# 添加 CORS 中间件,以处理跨域请求
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有 HTTP 方法
    allow_headers=["*"],  # 允许所有 HTTP 头部
)

# 自定义中间件
async def custom_middleware(request: Request, call_next):
    # 在请求到达应用程序之前执行的操作
    print(f"Processing request: {request.url}")
    
    # 继续处理请求
    response = await call_next(request)
    
    # 在响应离开应用程序之后执行的操作
    print(f"Processed response: {response.status_code}")
    
    return response

# 将自定义中间件添加到应用程序
app.middleware("http")(custom_middleware)

# 路径操作函数
@app.get("/")
async def read_root():
    return {"message": "Hello, World!"}

在这个例子中:

1. 使用 app.add_middleware 方法添加了 CORS 中间件,以便处理跨域请求。这是 FastAPI 内置的中间件,通过配置参数可以实现对跨域资源的控制。

2. 定义了一个名为 custom_middleware 的自定义中间件函数,它接受一个 Request 对象和一个 call_next 函数作为参数。在函数内部,你可以在请求到达应用程序之前执行一些操作,以及在响应离开应用程序之后执行一些操作。

3. 使用 app.middleware("http")(custom_middleware) 将自定义中间件添加到应用程序。在这里,我们将中间件绑定到 HTTP 请求。

4. 最后,有一个简单的路径操作函数 /,它返回一个简单的消息。

中间件提供了一种灵活的机制,允许你在应用程序的不同阶段执行自定义逻辑。你可以使用中间件来实现日志记录、身份验证、异常处理、性能监控等功能。确保了解 FastAPI 中间件的生命周期和使用方法,以便更好地满足应用程序的需求。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7394/FastAPI