FastAPI系列教程09:常用FastAPI middleware中间件的详细使用

本文详细介绍了FastAPI中常用的中间件,如内置的SessionMiddleware、CORSMiddleware等,以及它们的执行顺序和配置。同时涵盖了第三方提供的如HTTPSRedirectMiddleware、TrustedHostMiddleware和CSRFMiddleware等内容。


在FastAPI中已经内置了Starlette大量的middleware中间件,这些中间件可以初步用于OAuth2、CORS、Gzip等功能的实现。下面我们对这些常用中间件的使用进行详细的说明。

多个中间件的执行顺序

在一个FastAPI程序中,可以通过add_middleware引入多个中间件,这时就会出现执行顺序的问题。FastAPI遵循后进先执行的原则,参考下面的例子:
main.py

import uvicorn as uvicorn
from fastapi import FastAPI

from fapi.middlewares.multi_middleware import MutilAMiddleware, MutilBMiddleware

app = FastAPI()

app.add_middleware(MutilAMiddleware, assigned_number=1)
app.add_middleware(MutilBMiddleware, assigned_number=2)


@app.get("/")
async def index():
    print("'index' router executed!")
    return "test middleware"


if __name__ == '__main__':
    uvicorn.run(app="main:app", port=8088, reload=True)

multi_middleware.py

from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request


class MutilAMiddleware(BaseHTTPMiddleware):
    def __init__(self, app, assigned_number):
        super().__init__(app)
        self.assigned_number = assigned_number

    async def dispatch(self, request: Request, call_next):
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值