新聞中心
你可以使用定義 Query, Path 和 Cookie 參數(shù)一樣的方法定義 Header 參數(shù)。

成都創(chuàng)新互聯(lián),專(zhuān)注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站制作、響應(yīng)式網(wǎng)站設(shè)計(jì)、展示型成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo)推廣問(wèn)題。
導(dǎo)入 Header
首先導(dǎo)入 Header:
from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
return {"User-Agent": user_agent}
聲明 Header 參數(shù)
然后使用和Path, Query and Cookie 一樣的結(jié)構(gòu)定義 header 參數(shù)
第一個(gè)值是默認(rèn)值,你可以傳遞所有的額外驗(yàn)證或注釋參數(shù):
from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
return {"User-Agent": user_agent}
技術(shù)細(xì)節(jié)
Header 是 Path, Query 和 Cookie 的兄弟類(lèi)型。它也繼承自通用的 Param 類(lèi).
但是請(qǐng)記得,當(dāng)你從fastapi導(dǎo)入 Query, Path, Header, 或其他時(shí),實(shí)際上導(dǎo)入的是返回特定類(lèi)型的函數(shù)。
Info
為了聲明headers, 你需要使用Header, 因?yàn)榉駝t參數(shù)將被解釋為查詢(xún)參數(shù)。
自動(dòng)轉(zhuǎn)換
Header 在 Path, Query 和 Cookie 提供的功能之上有一點(diǎn)額外的功能。
大多數(shù)標(biāo)準(zhǔn)的headers用 "連字符" 分隔,也稱(chēng)為 "減號(hào)" (-)。
但是像 user-agent 這樣的變量在Python中是無(wú)效的。
因此, 默認(rèn)情況下, Header 將把參數(shù)名稱(chēng)的字符從下劃線(xiàn) (_) 轉(zhuǎn)換為連字符 (-) 來(lái)提取并記錄 headers.
同時(shí),HTTP headers 是大小寫(xiě)不敏感的,因此,因此可以使用標(biāo)準(zhǔn)Python樣式(也稱(chēng)為 "snake_case")聲明它們。
因此,您可以像通常在Python代碼中那樣使用 user_agent ,而不需要將首字母大寫(xiě)為 User_Agent 或類(lèi)似的東西。
如果出于某些原因,你需要禁用下劃線(xiàn)到連字符的自動(dòng)轉(zhuǎn)換,設(shè)置Header的參數(shù) convert_underscores 為 False:
from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
strange_header: Optional[str] = Header(None, convert_underscores=False)
):
return {"strange_header": strange_header}
Warning
在設(shè)置 convert_underscores 為 False 之前,請(qǐng)記住,一些HTTP代理和服務(wù)器不允許使用帶有下劃線(xiàn)的headers。
重復(fù)的 headers
有可能收到重復(fù)的headers。這意味著,相同的header具有多個(gè)值。
您可以在類(lèi)型聲明中使用一個(gè)list來(lái)定義這些情況。
你可以通過(guò)一個(gè)Python list 的形式獲得重復(fù)header的所有值。
比如, 為了聲明一個(gè) X-Token header 可以出現(xiàn)多次,你可以這樣寫(xiě):
from typing import List, Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(x_token: Optional[List[str]] = Header(None)):
return {"X-Token values": x_token}
如果你與路徑操作通信時(shí)發(fā)送兩個(gè)HTTP headers,就像:
X-Token: foo
X-Token: bar
響應(yīng)會(huì)是:
{
"X-Token values": [
"bar",
"foo"
]
}
回顧
使用 Header 來(lái)聲明 header , 使用和 Query, Path 與 Cookie 相同的模式。
不用擔(dān)心變量中的下劃線(xiàn),F(xiàn)astAPI 會(huì)負(fù)責(zé)轉(zhuǎn)換它們。
當(dāng)前文章:創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程 Header 參數(shù)
URL標(biāo)題:http://m.5511xx.com/article/ccdpceo.html


咨詢(xún)
建站咨詢(xún)
