FastAPI中的Pydantic用于定义数据模型。您可以执行以下操作:
有什么方法可以做到以下几点吗?
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
id: str
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/{item_id}")
async def create_item(item: Item):
return item
我希望在Item
模型中具有item_id
路径参数值。
有可能吗?
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
id: Optional[str] = None
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/{item_id}")
async def create_item(item_id, item: Item):
item.id = item_id
return item
请注意,id
被声明为可选,以避免请求中的主体参数出现验证问题。事实上,你不会在身体中传递id
,而是在路径中传递。
如果需要,您还可以将请求与响应模型解耦(请参阅此处(。这取决于你需要什么。
我不知道这是否仍然相关,也不知道这个解决方案有多安全,但你可以这样做:
@app.post("/items/{item.id}")
async def create_item(item: Item):
return item
用
id: Optional [str] = None
替换id: str
用
create_item (item_id, item: Item):
替换您的create_item (item: Item)
在
async
下添加item.id = item_id
。很明显,然后你离开了若退货项目