es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se muestra un menú desplegable en la documentación de FastAPI para mostrar múltiples ejemplos del cuerpo de la solicitud.

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": "Un ejemplo normal",
                "description": "Un artículo <strong>normal</strong> funciona correctamente.",
                "value": {
                    "name": "Foo",
                    "description": "Un artículo muy bonito",
                    "price": 35.4,
                    "tax": 3.2,
                },
            },
            "converted": {
                "summary": "Un ejemplo con datos convertidos",
                "description": "FastAPI puede convertir <code>cadenas</code> de precio en <code>números</code> reales automáticamente.",
                "value": {
                    "name": "Bar",
                    "price": "35.4",
                },
            },
            "invalid": {
                "summary": "Los datos inválidos son rechazados con un error",
                "value": {
                    "name": "Baz",
                    "price": "treinta y cinco punto cuatro",
                },
            },
        },
    ),
):
    results = {"item_id": item_id, "item": item}
    return results

exactamente como se muestra en la página y lo ejecuto usando Uvicorn. En mi pantalla no veo ninguna lista desplegable con los 3 ejemplos en el diccionario de ejemplos del cuerpo de la solicitud. Lo único que veo es un único valor de ejemplo con solo los tipos que deben tener los campos. ¿Por qué podría ser esto y por qué no me está funcionando, por favor?

Esto es lo que debería obtener: imagen

pero esto es lo que obtengo: imagen

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el código proporcionado, es posible que el problema sea que no estás utilizando la interfaz Swagger UI (o ReDoc) para ver la documentación de la API.

    Asegúrate de acceder al punto final /docs (o /redoc si prefieres ReDoc) en tu navegador para ver la Swagger UI. Por ejemplo, si estás ejecutando tu aplicación en localhost y el puerto 8000, puedes acceder a la Swagger UI en `http://localhost:8000/docs`.

    Si ya estás utilizando la Swagger UI y aún así no ves el menú desplegable de ejemplos, es posible que el problema esté relacionado con la versión de FastAPI que estás utilizando. Asegúrate de usar una versión reciente de FastAPI (al menos la versión 0.63.0), ya que el soporte para ejemplos de cuerpo de solicitud se agregó recientemente.

    Otro posible problema podría estar relacionado con la caché del navegador. A veces, incluso si actualizas el código y reinicias el servidor, el navegador puede almacenar en caché la versión antigua de la Swagger UI. Asegúrate de borrar la caché de tu navegador y volver a intentarlo.

    Si ninguna de las soluciones anteriores funciona, puedes intentar ejecutar el código de ejemplo proporcionado en la documentación oficial de FastAPI en un entorno limpio (por ejemplo, un nuevo entorno virtual, un equipo diferente, etc.) para ver si el problema es específico de tu entorno.

Comments are closed.