當(dāng)前位置:首頁(yè) > IT技術(shù) > Windows編程 > 正文

FastAPI(53)- Response Headers 響應(yīng)設(shè)置 Headers
2021-10-04 16:38:33

前言

?

有兩種實(shí)現(xiàn)場(chǎng)景

  • 路徑操作函數(shù)聲明 Response 參數(shù)來(lái)設(shè)置 Header
  • 在函數(shù)內(nèi),通過 return Response 來(lái)設(shè)置?Header

?

路徑操作函數(shù)聲明 Response 參數(shù)來(lái)設(shè)置 Header

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/item")
# 路徑操作函數(shù)聲明一個(gè) Response 類型的參數(shù)
async def get_item(response: Response):
    response.headers["x-token"] = "token_!@#%#$^$%&"
    return {"name": "設(shè)置 headers"}
  • 然后可以像往常一樣返回需要的任何對(duì)象(字典、數(shù)據(jù)庫(kù)模型等)
  • 如果聲明了一個(gè) response_model,它仍將用于過濾和轉(zhuǎn)換返回的對(duì)象
  • FastAPI 將使用該臨時(shí)響應(yīng)來(lái)提取 headers(還有 cookies、status_code),并將它們放入包含返回值的最終響應(yīng)中,由任何 response_model 過濾
  • 還可以在依賴項(xiàng)中聲明 Response 參數(shù),并在其中設(shè)置 headers、cookies

?

請(qǐng)求結(jié)果

?

聲明 response_model 和使用依賴項(xiàng)的栗子

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": "測(cè)試 dependencies和response_model", "age": 24}

?

請(qǐng)求結(jié)果

?

通過 return Response 來(lái)設(shè)置 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

?

請(qǐng)求結(jié)果

?

headers 的源碼

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

?

本文摘自 :https://www.cnblogs.com/

開通會(huì)員,享受整站包年服務(wù)立即開通 >