日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程中間件

你可以向 FastAPI 應用添加中間件.

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供范縣網站建設、范縣做網站、范縣網站設計、范縣網站制作等企業(yè)網站建設、網頁設計與制作、范縣企業(yè)網站模板建站服務,十多年范縣做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

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

  • 它接收你的應用程序的每一個請求.
  • 然后它可以對這個請求做一些事情或者執(zhí)行任何需要的代碼.
  • 然后它將請求傳遞給應用程序的其他部分 (通過某種路徑操作).
  • 然后它獲取應用程序生產的響應 (通過某種路徑操作).
  • 它可以對該響應做些什么或者執(zhí)行任何需要的代碼.
  • 然后它返回這個 響應.

技術細節(jié)

如果你使用了 yield 關鍵字依賴, 依賴中的退出代碼將在執(zhí)行中間件后執(zhí)行.

如果有任何后臺任務(稍后記錄), 它們將在執(zhí)行中間件后運行.

創(chuàng)建中間件

要創(chuàng)建中間件你可以在函數的頂部使用裝飾器 @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)
    return response

Tip

請記住可以 用'X-' 前綴添加專有自定義請求頭.

但是如果你想讓瀏覽器中的客戶端看到你的自定義請求頭, 你需要把它們加到 CORS 配置 (CORS (Cross-Origin Resource Sharing)) 的 expose_headers 參數中,在 Starlette's CORS docs文檔中.

技術細節(jié)

你也可以使用 from starlette.requests import Request.

FastAPI 為了開發(fā)者方便提供了該對象. 但其實它直接來自于 Starlette.

在 response 的前和后

在任何路徑操作收到request前,可以添加要和請求一起運行的代碼.

也可以在響應生成但是返回之前添加代碼.

例如你可以添加自定義請求頭 X-Process-Time 包含以秒為單位的接收請求和生成響應的時間:

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

其他中間件

你可以稍后在 Advanced User Guide: Advanced Middleware閱讀更多關于中間件的教程.

你將在下一節(jié)中學習如何使用中間件處理 CORS .


標題名稱:創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程中間件
分享URL:http://m.5511xx.com/article/coicodp.html