1. 程式人生 > 其它 >FastAPI(53)- Response Headers 響應設定 Headers

FastAPI(53)- Response Headers 響應設定 Headers

前言

有兩種實現場景

  • 路徑操作函式宣告 Response 引數來設定 Header
  • 在函式內,通過 return Response 來設定Header

路徑操作函式宣告 Response 引數來設定 Header

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/item")
# 路徑操作函式宣告一個 Response 型別的引數
async def get_item(response: Response): response.headers["x-token"] = "token_!@#%#$^$%&" return {"name": "設定 headers"}
  • 然後可以像往常一樣返回需要的任何物件(字典、資料庫模型等)
  • 如果聲明瞭一個 response_model,它仍將用於過濾和轉換返回的物件
  • FastAPI 將使用該臨時響應來提取 headers(還有 cookies、status_code),並將它們放入包含返回值的最終響應中,由任何 response_model 過濾
  • 還可以在依賴項
    中宣告 Response 引數,並在其中設定 headers、cookies

請求結果

宣告 response_model 和使用依賴項的栗子

from fastapi import FastAPI, Response, Depends
from pydantic import BaseModel

app = FastAPI()
class Item(BaseModel):
    id: str
    name: str


async def depnds_header(response: Response):
    response.headers["x-depends-token
"] = "************" @app.get("/item2", dependencies=[Depends(depnds_header)], response_model=Item) async def get_item(): return {"id": "12345", "name": "測試 dependencies和response_model", "age": 24}

請求結果

通過 return Response 來設定 Header

from fastapi import FastAPI, Response
from fastapi.responses import JSONResponse

app = FastAPI()
@app.get("/items")
async def get_item():
    response = JSONResponse(content={"name": "JSONResponse"})
    response.headers["x-auth-token"] = "XXX_TOKEN"
    return response

請求結果

headers 的原始碼

它是 Starlette 庫的 Response 類裡面的方法哦,加了 @property 變成屬性,就可以訪問私有屬性 _headers 了