1. 程式人生 > WINDOWS開發 >FastAPI 中介軟體(一) 自定義中介軟體

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產生後但返回之前,新增一些自定義邏輯,如上所示的新增自定義頭資訊。