中间件

blog_img/fastapi系列/(fastapi一)安装与简单使用/封面.jpg
“中间件”是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作.

  • 它接收你的应用程序的每一个请求.
  • 然后它可以对这个请求做一些事情或者执行任何需要的代码.
  • 然后它将请求传递给应用程序的其他部分 (通过某种路径操作).
  • 然后它获取应用程序生产的响应 (通过某种路径操作).
  • 它可以对该响应做些什么或者执行任何需要的代码.
  • 然后它返回这个 响应.

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import time

from fastapi import FastAPI, Request

app = FastAPI()


@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response

其中:

  • request:项目接受的请求,可以获取请求信息
  • call_next:将 request 传递给相应的 路径操作.然后它将返回由相应的路径操作生成的 response.
  • response.headers[“X-Process-Time”]:修改返回头信息

总结

中间件能够在每一个请求接受之前对请求进行操作,捕获请求的信息,并对请求或者返回信息进行修改。