相关疑难解决方法(0)

Python 中的 REST API 与 FastAPI 和 pydantic:模型中的只读属性

假设一个 REST API 在资源 /foos 上定义了一个 POST 方法来创建一个新的 Foo。创建 Foo 时,Foo 的名称是一个输入参数(存在于请求正文中)。当服务器创建 Foo 时,它会为其分配一个 ID。此 ID 与 REST 响应中的名称一起返回。我正在寻找类似于 OpenAPI 中的 readOnly 的东西。

输入 JSON 应如下所示:

{
    "name": "bar"
}
Run Code Online (Sandbox Code Playgroud)

输出 JSON 应如下所示:

{
    "id": 123,
    "name": "bar"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法重用相同的 pydantic 模型?或者是否有必要使用两种不同的模型?

class FooIn(BaseModel):
    name: str

class Foo(BaseModel):
    id: int
    name: str
Run Code Online (Sandbox Code Playgroud)

我在 pydantic 文档或 Field 类代码中找不到任何提及“只读”、“只读”或“只读”的内容。

谷歌搜索我发现一个帖子提到

id: int = Schema(..., readonly=True)
Run Code Online (Sandbox Code Playgroud)

但这似乎对我的用例没有影响。

python rest python-3.x pydantic fastapi

6
推荐指数
1
解决办法
8274
查看次数

标签 统计

fastapi ×1

pydantic ×1

python ×1

python-3.x ×1

rest ×1