FastAPI 學習之路(三十)中間件


  什么是中間件呢,"中間件"是一個函數,它在每個請求被特定的路徑操作處理之前,以及在每個響應返回之前工作.

  • 它接收你的應用程序的每一個請求.

  • 然后它可以對這個請求做一些事情或者執行任何需要的代碼.

  • 然后它將請求傳遞給應用程序的其他部分 (通過某種路徑操作).

  • 然后它獲取應用程序生產的響應 (通過某種路徑操作).

  • 它可以對該響應做些什么或者執行任何需要的代碼.

  • 然后它返回這個 響應.

      那么看下如何創建中間件?

      

要創建中間件你可以在函數的頂部使用裝飾器 @app.middleware("http").

中間件參數接收如下參數:

  • request.

  • 一個函數 call_next 它將接收 request 作為參數.

    • 這個函數將 request 傳遞給相應的 路徑操作.

    • 然后它將返回由相應的路徑操作生成的 response.

  • 然后你可以在返回 response 前進一步修改它.

     

    我們看下如何去實現中間件。

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)
    response.headers['leizishuocceshikaifa']="leizishuoceshikaifa"
    return response
@app.post("/create")
def post():
    return "post"

我們實現一個中間件,

            在 response 的前和后 在任何路徑操作收到request前,可以添加要和請求一起運行的代碼.也可以在響應生成但是返回之前添加代碼。

        我們去看下接口輸出的結果

 

 

 我們看下接口返回的Headers

 

 我們可以看到,我標記紅色的地方,就是我們在請求的中間件中,處理的,默認就給我們返回我們處理后的。


免責聲明!

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



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