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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM