1. 程式人生 > WINDOWS開發 >FastAPI 中介軟體(二) 高階中介軟體

FastAPI 中介軟體(二) 高階中介軟體

作者:麥克煎蛋 出處:https://www.cnblogs.com/mazhiyong/ 轉載請保留這段宣告,謝謝!

除了自定義中介軟體,我們也可以直接使用其他的中介軟體。

FastAPI通過 app.add_middleware() 操作來引入已定義的中介軟體。

from fastapi import FastAPI
from unicorn import UnicornMiddleware

app = FastAPI()

app.add_middleware(UnicornMiddleware,some_config="rainbow")

app.add_middleware()第一個引數是中介軟體類,同時還支援中介軟體的其他附加資訊。

FastAPI提供了一些常用的中介軟體。

一、HTTPSRedirectMiddleware

HTTPSRedirectMiddleware強制發來的請求協議必須是https或者wss。

from fastapi import FastAPI
from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware

app = FastAPI()

app.add_middleware(HTTPSRedirectMiddleware)


@app.get("/")
async def main():
    return {"
message": "Hello World"}

二、TrustedHostMiddleware

TrustedHostMiddleware強制發來的請求必須在Header資訊中設定了Host選項,為了避免HTTP Host Header攻擊。

from fastapi import FastAPI
from fastapi.middleware.trustedhost import TrustedHostMiddleware

app = FastAPI()

app.add_middleware(
    TrustedHostMiddleware,allowed_hosts=["example.com
","*.example.com"
] ) @app.get("/") async def main(): return {"message": "Hello World"}

三、GZipMiddleware

當請求的頭資訊 Accept-Encoding 欄位帶有"gzip"時,GZipMiddleware負責完成相應的返回結果處理。

GZipMiddleware 支援 minimum_size 引數:當返回結果大小小於指定值時不啟用壓縮。(單位為位元組,預設值為500)

from fastapi import FastAPI
from fastapi.middleware.gzip import GZipMiddleware

app = FastAPI()

app.add_middleware(GZipMiddleware,minimum_size=1000)


@app.get("/")
async def main():
    return "somebigcontent"

更多中介軟體資訊可參考文件:

Starlette‘s Middleware docs

ASGI Awesome List