FastAPI - 中间件
中间件 是一个在每个请求(在被任何特定路径操作处理之前)以及在返回每个响应之前处理的函数。这个函数接收发送到你的应用程序的每个请求。它可以对请求执行一些处理,通过运行其中定义的代码,然后将请求传递给对应的操作函数处理。它还可以在返回响应之前处理操作函数生成的响应。
FastAPI 库中提供了一些中间件,以下是其中一些:
CORSMiddleware
HTTPSRedirectMiddleware
TrustedHostMiddleware
GZipMiddleware
FastAPI 提供了 app.add_middleware() 函数来处理服务器错误和自定义异常处理器。除了上述内置中间件外,还可以定义自定义中间件。以下示例定义了 addmiddleware() 函数,并使用 @app.middleware() 装饰器将其装饰为中间件。
该函数有两个参数:HTTP 请求对象,以及 call_next() 函数,该函数会将 API 请求发送到对应的路径并返回响应。
除了中间件函数外,应用程序还有两个操作函数。
示例 - 创建中间件
main.py
import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def addmiddleware(request: Request, call_next):
print("Middleware works!")
response = await call_next(request)
return response
@app.get("/")
async def index():
return {"message":"Hello World"}
@app.get("/{name}")
async def hello(name:str):
return {"message":"Hello "+name}
当应用程序运行时,对于浏览器发出的每个请求,控制台日志中会在响应输出之前显示中间件输出(Middleware works!)。