Por ejemplo, imagina que tenemos dos puntos finales:
class FooRequest(BaseModel): data: str @router.post("/foo/", response_model=FooRequest) async def foo_view(data: FooRequest) -> FooRequest: ... @router.get("/bar/", response_model=FooRequest) async def bar_view(data: str = Query(..., description="Data param")) -> FooRequest: ... En la interfaz de usuario de Swagger /bar/ endpoint tendrá un parámetro de consulta debidamente documentado y /foo/ tendrá algún ejemplo abstracto del cuerpo de la publicación sin ninguna descripción.
Entonces, ¿cómo puedo documentar el modelo de cuerpo posterior?
Puede declarar un ejemplo para un modelo Pydantic usando Config y schema_extra .
class FooRequest(BaseModel): data: str class Config: schema_extra = { "FooRequest": { "name": "Foo Request", "description": "Data param", } } También con Field declara información adicional para su esquema JSON.
from pydantic import Field ... class FooRequest(BaseModel): data: str = Field(..., example="Data param for Foo Request") description: Optional[str] = Field(None, example="Description for Foo") De la misma manera que puede pasar información adicional a Field , puede hacer lo mismo con Path , Query , Body , etc.
Por ejemplo, puede pasar un ejemplo de una solicitud de cuerpo a Body :
from fastapi import Body ... class FooRequest(BaseModel): data: str @router.post("/foo/", response_model=FooRequest) async def foo_view(data: FooRequest = Body( ..., example={ "name": "Foo Request", "description": "data param", }, ), ) -> FooRequest: