[Python FastApi] FastApi中Body的参数详解

问题引入

fastapi 接口中只有一个参数时候,为遵循json传参规则,则会转换为传递一个字符串。
若想保持一致,则在参数定义时候设置属性embed为True即可,默认为False。

查看Body函数的源码:

def Body(  # noqa: N802
    default: Any,
    *,
    embed: bool = False,
    media_type: str = "application/json",
    alias: Optional[str] = None,
    title: Optional[str] = None,
    description: Optional[str] = None,
    gt: Optional[float] = None,
    ge: Optional[float] = None,
    lt: Optional[float] = None,
    le: Optional[float] = None,
    min_length: Optional[int] = None,
    max_length: Optional[int] = None,
    regex: Optional[str] = None,
    **extra: Any,
) -> Any:

Q:

尝试解释下embed参数的作用:

A:

embed参数是一个布尔值,用于指示是否嵌入(embed)请求体参数。当embed为True时,请求体参数会被嵌入到API文档中,而不是以引用的方式显示。这样可以直接在API文档中查看请求体参数的详细信息,包括参数的类型、描述、默认值等。当embed为False时,默认情况下不会嵌入请求体参数,而是以引用的方式显示。

扩展

继续分析func Body()中每个参数的作用:

  • default参数是一个Any类型的参数,表示参数的默认取值。当请求中没有提供该参数时,会采用默认值。
  • embed参数是一个bool类型的参数,用于指示是否嵌入请求体参数。当embed为True时,请求体参数会被嵌入到API文档中,而不是以引用的方式显示。这样可以直接在API文档中查看请求体参数的详细信息,包括参数的类型、描述、默认值等。当embed为False时,默认情况下不会嵌入请求体参数,而是以引用的方式显示。
  • media_type参数是一个str类型的参数,表示数据的媒体类型,默认为"application/json"。这个参数可以指定数据的格式,例如JSON、XML等。
  • alias参数是一个Optional[str]类型的参数,表示参数的别名。在文档中显示参数的时候可以使用别名,用于更好地描述参数的含义。
  • title参数是一个Optional[str]类型的参数,表示参数的标题。在文档中显示参数的时候可以使用标题,用于更好地区分参数。
  • description参数是一个Optional[str]类型的参数,表示参数的描述。在文档中显示参数的时候可以使用描述,用于详细说明参数的作用和用法。
  • gt参数是一个Optional[float]类型的参数,表示参数的值必须大于指定值。用于限定参数的取值范围。
  • ge参数是一个Optional[float]类型的参数,表示参数的值必须大于等于指定值。用于限定参数的取值范围。
  • lt参数是一个Optional[float]类型的参数,表示参数的值必须小于指定值。用于限定参数的取值范围。
  • le参数是一个Optional[float]类型的参数,表示参数的值必须小于等于指定值。用于限定参数的取值范围。
  • min_length参数是一个Optional[int]类型的参数,表示参数值的最小长度。用于限定参数值的长度范围。
  • max_length参数是一个Optional[int]类型的参数,表示参数值的最大长度。用于限定参数值的长度范围。
  • regex参数是一个Optional[str]类型的参数,表示参数值必须符合指定的正则表达式。用于对参数值进行正则表达式匹配验证。
  • **extra参数是一个Any类型的可变关键字参数,用于接收额外的参数信息。可以接收任意数量的额外参数,并将其存储在extra参数中,以便在函数内部进行处理。
  • Done~

    作者:然然然也

    物联沃分享整理
    物联沃-IOTWORD物联网 » [Python FastApi] FastApi中Body的参数详解

    发表回复