FastAPI 中介軟體(一) 自定義中介軟體
阿新 • • 發佈:2020-06-05
作者:麥克煎蛋 出處: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:傳遞
我們可以在response返回之前對其進行更改。request
給相應的路徑操作,然後從路徑操作中返回response。
我們可以在呼叫函式 call_next之前,即任何路徑操作接收到request之前,新增一些自定義邏輯。
也可以在response產生後但返回之前,新增一些自定義邏輯,如上所示的新增自定義頭資訊。