带有FastAPI和PYDANIC的Python中的REST API:模型中的只读属性 [英] REST API in Python with FastAPI and pydantic: read-only property in model

查看:0
本文介绍了带有FastAPI和PYDANIC的Python中的REST API:模型中的只读属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

输入JSON应如下所示:

{
    "name": "bar"
}

输出JSON应如下所示:

{
    "id": 123,
    "name": "bar"
}

有没有办法重用相同的PUDING模型?还是有必要使用两个不同的模型?

class FooIn(BaseModel):
    name: str

class Foo(BaseModel):
    id: int
    name: str

我找不到任何有关"Read Only"、"Read-Only"或"Read Only"的内容,请注意,请注意请注意。

我在谷歌上找到一篇帖子,其中提到

id: int = Schema(..., readonly=True)

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

推荐答案

拥有多个型号很好。您可以使用继承来减少代码重复:

from pydantic import BaseModel


# Properties to receive via API create/update
class Foo(BaseModel):
    name: str


# Properties to return via API
class FooDB(Foo):
    id: int

documentation是非常好的btw!,对此进行了更深入的探讨。

Here是取自官方的全栈项目生成器的真实用户模型示例。您可以看到如何根据上下文使用多个模型来定义用户架构。

这篇关于带有FastAPI和PYDANIC的Python中的REST API:模型中的只读属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆