FastAPI - 中间件



中间件是一个函数,它会在每个请求处理之前(在任何特定路径操作处理之前)以及在返回每个响应之前进行处理。此函数接收进入应用程序的每个请求。它可以通过运行其中定义的代码对请求执行某些过程,然后将请求传递给相应的操作函数进行处理。它还可以处理操作函数生成的响应,然后再返回该响应。

以下是 FastAPI 库中提供的一些中间件:

  • CORSMiddleware

  • HTTPSRedirectMiddleware

  • TrustedHostMiddleware

  • GZipMiddleware

FastAPI 提供了app.add_middleware() 函数来处理服务器错误和自定义异常处理器。除了上述集成的中间件之外,还可以定义自定义中间件。以下示例定义了addmiddleware() 函数,并通过使用@app.middleware() 装饰器将其装饰为中间件。

该函数有两个参数:HTTP 请求对象和call_next() 函数,该函数会将 API 请求发送到其对应的路径并返回响应。

除了中间件函数之外,应用程序还有两个操作函数。

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!)将出现在控制台日志中,然后再出现响应输出。

广告