新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程額外數(shù)據(jù)類(lèi)型
到目前為止,您一直在使用常見(jiàn)的數(shù)據(jù)類(lèi)型,如:

- int
- float
- str
- bool
但是您也可以使用更復(fù)雜的數(shù)據(jù)類(lèi)型。
您仍然會(huì)擁有現(xiàn)在已經(jīng)看到的相同的特性:
- 很棒的編輯器支持。
- 傳入請(qǐng)求的數(shù)據(jù)轉(zhuǎn)換。
- 響應(yīng)數(shù)據(jù)轉(zhuǎn)換。
- 數(shù)據(jù)驗(yàn)證。
- 自動(dòng)補(bǔ)全和文檔。
其他數(shù)據(jù)類(lèi)型
下面是一些你可以使用的其他數(shù)據(jù)類(lèi)型:
- UUID:一種標(biāo)準(zhǔn)的 "通用唯一標(biāo)識(shí)符" ,在許多數(shù)據(jù)庫(kù)和系統(tǒng)中用作ID。在請(qǐng)求和響應(yīng)中將以 str 表示。
- datetime.datetime:一個(gè) Python datetime.datetime.在請(qǐng)求和響應(yīng)中將表示為 ISO 8601 格式的 str ,比如: 2008-09-15T15:53:00+05:00.
- datetime.date:Python datetime.date.在請(qǐng)求和響應(yīng)中將表示為 ISO 8601 格式的 str ,比如: 2008-09-15.
- datetime.time:一個(gè) Python datetime.time.在請(qǐng)求和響應(yīng)中將表示為 ISO 8601 格式的 str ,比如: 14:23:55.003.
- datetime.timedelta:一個(gè) Python datetime.timedelta.在請(qǐng)求和響應(yīng)中將表示為 float 代表總秒數(shù)。Pydantic 也允許將其表示為 "ISO 8601 時(shí)間差異編碼", 查看文檔了解更多信息。
- frozenset:在請(qǐng)求和響應(yīng)中,作為 set 對(duì)待:在請(qǐng)求中,列表將被讀取,消除重復(fù),并將其轉(zhuǎn)換為一個(gè) set。在響應(yīng)中 set 將被轉(zhuǎn)換為 list 。產(chǎn)生的模式將指定那些 set 的值是唯一的 (使用 JSON 模式的 uniqueItems)。
- bytes:標(biāo)準(zhǔn)的 Python bytes。在請(qǐng)求和相應(yīng)中被當(dāng)作 str 處理。生成的模式將指定這個(gè) str 是 binary "格式"。
- Decimal:標(biāo)準(zhǔn)的 Python Decimal。在請(qǐng)求和相應(yīng)中被當(dāng)做 float 一樣處理。
- 您可以在這里檢查所有有效的pydantic數(shù)據(jù)類(lèi)型: Pydantic data types.
例子
下面是一個(gè)路徑操作的示例,其中的參數(shù)使用了上面的一些類(lèi)型。
from datetime import datetime, time, timedelta
from typing import Optional
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: Optional[datetime] = Body(None),
end_datetime: Optional[datetime] = Body(None),
repeat_at: Optional[time] = Body(None),
process_after: Optional[timedelta] = Body(None),
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"repeat_at": repeat_at,
"process_after": process_after,
"start_process": start_process,
"duration": duration,
}
注意,函數(shù)內(nèi)的參數(shù)有原生的數(shù)據(jù)類(lèi)型,你可以,例如,執(zhí)行正常的日期操作,如:
from datetime import datetime, time, timedelta
from typing import Optional
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: Optional[datetime] = Body(None),
end_datetime: Optional[datetime] = Body(None),
repeat_at: Optional[time] = Body(None),
process_after: Optional[timedelta] = Body(None),
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"repeat_at": repeat_at,
"process_after": process_after,
"start_process": start_process,
"duration": duration,
}
網(wǎng)站欄目:創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程額外數(shù)據(jù)類(lèi)型
轉(zhuǎn)載注明:http://m.fisionsoft.com.cn/article/djpjooo.html


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