FastAPI基础之 模型的额外信息-示例

  1、Pydantic schema_extra

  您可以使用 Config 和 schema_extra 为Pydantic模型声明一个示例,如Pydantic 文档:定制 Schema 中所述:

  from typing import Optional

  from fastapi import FastAPI

  from pydantic import BaseModel

  app = FastAPI()

  class Item(BaseModel):

  name: str

  description: Optional[str] = None

  price: float

  tax: Optional[float] = None

  class Config:

  schema_extra = {

  "example": {

  "name": "Foo",

  "description": "A very nice Item",

  "price": 35.4,

  "tax": 3.2,

  }

  }

  @app.put("/items/{item_id}")

  async def update_item(item_id: int, item: Item):

  results = {"item_id": item_id, "item": item}

  return results

  这些额外的信息将按原样添加到输出的JSON模式中。

  2、Field 的附加参数

  在 Field, Path, Query, Body 和其他你之后将会看到的工厂函数,你可以为JSON 模式声明额外信息,你也可以通过给工厂函数传递其他的任意参数来给JSON 模式声明额外信息,比如增加 example:

  from typing import Optional

  from fastapi import FastAPI

  from pydantic import BaseModel, Field

  app = FastAPI()

  class Item(BaseModel):

  name: str = Field(..., example="Foo")

  description: Optional[str] = Field(None, example="A very nice Item")

  price: float = Field(..., example=35.4)

  tax: Optional[float] = Field(None, example=3.2)

  @app.put("/items/{item_id}")

  async def update_item(item_id: int, item: Item):

  results = {"item_id": item_id, "item": item}

  return results

  Warning

  请记住,传递的那些额外参数不会添加任何验证,只会添加注释,用于文档的目的。

  3、Body 额外参数大连妇科医院哪家好 http://mobile.84211111.cn/

  你可以通过传递额外信息给 Field 同样的方式操作Path, Query, Body等。

  比如,你可以将请求体的一个 example 传递给 Body:

  from typing import Optional

  from fastapi import Body, FastAPI

  from pydantic import BaseModel

  app = FastAPI()

  class Item(BaseModel):

  name: str

  description: Optional[str] = None

  price: float

  tax: Optional[float] = None

  @app.put("/items/{item_id}")

  async def update_item(

  item_id: int,

  item: Item = Body(

  ...,

  example={

  "name": "Foo",

  "description": "A very nice Item",

  "price": 35.4,

  "tax": 3.2,

  },

  ),

  ):

  results = {"item_id": item_id, "item": item}

  return results

猜你喜欢

转载自blog.51cto.com/14503791/2677609