如何将路径参数传递给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路径参数值。

有可能吗?

FastAPI中的Pydantic用于定义数据模型。您可以执行以下操作:
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
  1. id: Optional [str] = None替换id: str

  2. create_item (item_id, item: Item):替换您的create_item (item: Item)

  3. async下添加item.id = item_id。很明显,然后你离开了若退货项目

相关内容

  • 没有找到相关文章

最新更新