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

如有必要,您还可以将请求与响应模型分离(参见 here )。这取决于您的需求。

https://stackoverflow.com/questions/69915232/

相关文章:

android - 加载 flutter 时去除图像中的白色闪烁

json - 通过 Postman 使用 PUT 请求更新 Contentful 帖子

node.js - 在不使用 NVM for Windows 的情况下在 Windows 上安装多个

jooq - jooq record 取数据时是否使用列索引?

amazon-web-services - AWS CodePipeline 角色无权在阶段的 "a

r - 具有不同颜色负值的条形图

angular - 检测关闭浏览器 Angular 12 的事件

networking - float IP 在 Digital Ocean 上的使用

javascript - 是否所有 WebAPI 都被推送到任务队列中?

swift - 我们如何在 SwiftUI 中制作自定义 GeometryReader?