FastAPI(四)中间件

这一部分介绍如何使用中间件拦截 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)