这一部分介绍如何使用中间件拦截 HTTP 请求和响应,实现请求处理逻辑。当应用中存在多个中间件时,它们会按照注册的顺序依次执行。请求会先经过第一个中间件,然后依次经过后续的中间件,最后到达路径操作函数;响应则会按照相反的顺序经过各个中间件。
from fastapi import FastAPI
from fastapi import Request
from fastapi import Response
import uvicorn
app = FastAPI()
# 第一个中间件
@app.middleware('http')
async def middleware1(request: Request, call_next):
print('middleware1:', request, call_next)
response : Response = await call_next(request)
print('middleware1:', response)
return response
# 第二个中间件
@app.middleware('http')
async def middleware2(request: Request, call_next):
print('middleware2:', request, call_next)
response : Response = await call_next(request)
print('middleware2:', response)
return response
@app.post('/demo')
async def demo():
return {'result': 'ok'}
if __name__ == '__main__':
uvicorn.run(app, host='127.0.0.1', port=8000)



冀公网安备13050302001966号