【问题标题】:What is Body? `from fastapi import Body`什么是身体? `从fastapi导入正文`
【发布时间】:2019-11-21 14:01:15
【问题描述】:

documentation 和其他地方我看到Body 被使用但不知道它是什么。

谁能解释一下这三个选项是什么意思?

from fastapi import Body
from pydantic import BaseModel

class MyModel(BaseModel):
    body1: None
    body2: Body(None)
    body3: Body(...)

【问题讨论】:

    标签: python python-3.x fastapi


    【解决方案1】:

    当您使用 Pydantic 模型时,您不需要使用 Body

    你可以写:

    from pydantic import BaseModel, Schema
    
    class MyModel(BaseModel):
        body1: None
        body2: Schema(None)
        body3: Schema(...)
    

    Body 仅在路径操作 参数中使用,当您需要强制 FastAPI 理解参数是作为正文的一部分接收时(例如,而不是查询参数)。您只需要在使用“奇异”类型(单个值,如intstr)的参数时显式使用Body。如果您使用 Pydantic 模型、列表或类似类型的东西,则无需显式使用 Body

    如果需要,您还可以使用Body 添加额外的元数据。如标题、示例等。

    在文档中了解更多信息:https://fastapi.tiangolo.com/tutorial/body/

    【讨论】:

    • 谢谢。好的,我刚刚测试了一些东西......而且似乎 Body 是 Body/Schema 中唯一一个不会产生错误的路径操作,但是当我在 MyModel 中有类似 Schema 的东西时似乎,当我使用 Body 时,schema_json 是相同的。
    • 在我的模型中使用 Schema 相对于 Body 有什么优势?看来我可以提供相同的参数集,并且文档看起来相同。
    • OK -- 好像上面显示的唯一区别是embedmedia_type 的存在......非常酷。而这些对于 Pydantic 来说不是必需的或相关的。谢谢!
    猜你喜欢
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2016-10-27
    相关资源
    最近更新 更多