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

FastAPI(52)- Response Cookies 響應設定 Cookies

前言

有兩種實現場景

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

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

from fastapi import FastAPI, Response

app = FastAPI()


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

請求結果

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

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

app = FastAPI()


class Item(BaseModel):
    id: str
    name: str


async def depnds_set_cookie(response: Response):
    response.set_cookie("x-depends-token", "************")


@app.get(
"/item2", dependencies=[Depends(depnds_set_cookie)], response_model=Item) async def get_item(): return {"id": "12345", "name": "測試 dependencies和response_model", "age": 24}

請求結果

通過 return Response 來設定 Cookie

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.set_cookie("test_token", "ABC_token")
    return response

請求結果

set_cookie 的原始碼

它是 Starlette 庫的 Response 類裡面的方法哦