Fastapi 简明教程

FastAPI - Middleware

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

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

  1. CORSMiddleware

  2. HTTPSRedirectMiddleware

  3. TrustedHostMiddleware

  4. 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}

随着应用程序的运行,对于浏览器发出的每个请求,中间件输出(中间件工作!)都会在响应输出之前显示在控制台日志中。