FastAPI中怎么實(shí)現(xiàn)表單數(shù)據(jù)驗(yàn)證

小億
119
2024-05-10 16:31:55

在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)。

2