fastapi接收json数据,使用BaseModel验证数据
时间: 2024-03-16 14:42:13 浏览: 114
如果你想在FastAPI中接收JSON数据并对其进行验证,可以使用`pydantic`模型作为请求体。下面是一个示例:
```python
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
async def create_item(item: Item):
return item
```
在上面的代码中,我们定义了一个`Item`模型,它继承自`BaseModel`。我们定义了两个属性:`name`和`price`。当我们在请求处理程序中使用`Item`作为参数时,FastAPI将自动将JSON数据反序列化为`Item`实例,并使用`pydantic`来验证数据。如果数据验证失败,FastAPI将自动返回一个带有错误信息的响应。
如果你需要在模型中添加默认值、描述等属性,可以使用`pydantic`的装饰器。例如:
```python
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
name: str = Field(..., description="The name of the item")
price: float = Field(..., gt=0, description="The price of the item")
@app.post("/items/")
async def create_item(item: Item):
return item
```
在上面的代码中,我们使用`Field`装饰器为`name`和`price`属性添加了默认值和描述。`...`表示属性是必需的。`gt=0`表示`price`属性必须大于0。
阅读全文