FastAPI 中间件怎么用?如何添加自定义 middleware?

文章导读
Previous Quiz Next 中间件 是一个在每个请求(在被任何特定路径操作处理之前)以及在返回每个响应之前处理的函数。这个函数接收发送到你的应用程序的每个请求。它可以对请求执行一些处理,通过运行其中定义的代码,然后将请求传递给对应的操作函数处理。它还可以在返回响应之
📋 目录
  1. 示例 - 创建中间件
A A

FastAPI - 中间件



Previous
Quiz
Next

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

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!)。