FastAPI 中介軟體(二) 高階中介軟體
阿新 • • 發佈:2020-06-05
作者:麥克煎蛋 出處: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"
更多中介軟體資訊可參考文件: