FastAPI 中間件(一) 自定義中間件


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

 

我們可以在FastAPI應用中使用中間件。

中間件實際上是一個函數,在每個request處理之前被調用,同時又在每個response返回之前被調用。

1、首先接收訪問過來的request。

2、然后針對request或其他功能執行自定義邏輯。

3、傳遞request給應用程序繼續處理。

4、接收應用所產生的response。

5、然后針對response或其他功能執行自定義邏輯。

6、返回response。

 

后台任務(如果有)會在所有中間件執行完以后才會執行。

 

我們通過在函數頂部添加裝飾器 @app.middleware("http") 的方式來新建一個中間件。

import time

from fastapi import FastAPI, Request

app = FastAPI()


@app.middleware("http") async def add_process_time_header(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time
    response.headers["X-Process-Time"] = str(process_time)
    return response

中間件函數接收兩個參數:

1、 request

2、函數 call_next:傳遞request給相應的路徑操作,然后從路徑操作中返回response。我們可以在response返回之前對其進行更改。

 

我們可以在調用函數 call_next之前,即任何路徑操作接收到request之前,添加一些自定義邏輯。

也可以在response產生后但返回之前,添加一些自定義邏輯,如上所示的添加自定義頭信息。


免責聲明!

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



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