在FastAPI中實(shí)現(xiàn)表單數(shù)據(jù)驗(yàn)證可以通過(guò)Pydantic庫(kù)來(lái)實(shí)現(xiàn)。Pydantic是一個(gè)數(shù)據(jù)驗(yàn)證庫(kù),可以幫助我們定義數(shù)據(jù)模型和進(jìn)行數(shù)據(jù)校驗(yàn)。
首先,需要定義一個(gè)Pydantic模型來(lái)表示表單數(shù)據(jù)的結(jié)構(gòu),例如:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
description: str = None
然后,在FastAPI的路由函數(shù)中使用這個(gè)模型來(lái)驗(yàn)證表單數(shù)據(jù),例如:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
class Item(BaseModel):
name: str
price: float
description: str = None
@app.post("/items/")
async def create_item(item: Item):
return {"name": item.name, "price": item.price}
在上面的例子中,我們定義了一個(gè)包含name、price和description字段的Item模型,并在create_item路由函數(shù)中使用這個(gè)模型來(lái)驗(yàn)證表單數(shù)據(jù)。如果客戶端發(fā)送的表單數(shù)據(jù)不符合Item模型的定義,F(xiàn)astAPI會(huì)返回一個(gè)HTTP 422 Unprocessable Entity錯(cuò)誤。
通過(guò)Pydantic庫(kù)和FastAPI的結(jié)合,我們可以方便地實(shí)現(xiàn)表單數(shù)據(jù)的驗(yàn)證,確保接收到的數(shù)據(jù)符合預(yù)期的格式和結(jié)構(gòu)。