Estoy siguiendo el tutorial de FastAPI y la parte https://fastapi.tiangolo.com/tutorial/schema-extra-example/ sobre mostrar varios ejemplos. Copié el código:
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( ..., examples={ "normal": { "summary": "A normal example", "description": "A **normal** item works correctly.", "value": { "name": "Foo", "description": "A very nice Item", "price": 35.4, "tax": 3.2, }, }, "converted": { "summary": "An example with converted data", "description": "FastAPI can convert price `strings` to actual `numbers` automatically", "value": { "name": "Bar", "price": "35.4", }, }, "invalid": { "summary": "Invalid data is rejected with an error", "value": { "name": "Baz", "price": "thirty five point four", }, }, }, ), ): results = {"item_id": item_id, "item": item} return resultsexactamente como se muestra en la página y lo ejecuto usando Uvicorn. En mi pantalla no veo ningún menú desplegable con los 3 ejemplos en el diccionario de ejemplos del cuerpo de la solicitud. Todo lo que veo es un único valor de ejemplo con solo los tipos que deben tener los campos. ¿Por qué sería eso y por qué esto no funciona para mí, por favor?
No estoy seguro si esto podría ayudar: https://github.com/tiangolo/fastapi/pull/1267#issuecomment-762557261 Esto significa dos cosas:
Item.Config.schema_extraAlgo como esto:
class Item(BaseModel): name: str description: Optional[str] = None price: float tax: Optional[float] = None class Config: schema_extra = { "examples": { "normal": { "summary": "A normal example", "description": "A **normal** item works correctly.", "value": { "name": "Foo", "description": "A very nice Item", "price": 35.4, "tax": 3.2, }, }, "converted": { "summary": "An example with converted data", "description": "FastAPI can convert price `strings` to actual `numbers` automatically", "value": { "name": "Bar", "price": "35.4", }, }, "invalid": { "summary": "Invalid data is rejected with an error", "value": { "name": "Baz", "price": "thirty five point four", }, }, } } @app.put("/items/{item_id}") async def update_item( *, item_id: int, item: Item = Body( None, examples=Item.Config.schema_extra["examples"], ), ): results = {"item_id": item_id, "item": item} return results¡Me ayudó!