docs/es/docs/how-to/extending-openapi.md MARKDOWN 89 lines View on github.com → Search inside
1# Extender OpenAPI { #extending-openapi }23Hay algunos casos en los que podrías necesitar modificar el esquema de OpenAPI generado.45En esta sección verás cómo hacerlo.67## El proceso normal { #the-normal-process }89El proceso normal (por defecto) es el siguiente.1011Una aplicación (instance) de `FastAPI` tiene un método `.openapi()` que se espera que devuelva el esquema de OpenAPI.1213Como parte de la creación del objeto de la aplicación, se registra una *path operation* para `/openapi.json` (o para lo que sea que configures tu `openapi_url`).1415Simplemente devuelve un response JSON con el resultado del método `.openapi()` de la aplicación.1617Por defecto, lo que hace el método `.openapi()` es revisar la propiedad `.openapi_schema` para ver si tiene contenido y devolverlo.1819Si no lo tiene, lo genera usando la función de utilidad en `fastapi.openapi.utils.get_openapi`.2021Y esa función `get_openapi()` recibe como parámetros:2223* `title`: El título de OpenAPI, mostrado en la documentación.24* `version`: La versión de tu API, por ejemplo `2.5.0`.25* `openapi_version`: La versión de la especificación OpenAPI utilizada. Por defecto, la más reciente: `3.1.0`.26* `summary`: Un breve resumen de la API.27* `description`: La descripción de tu API, esta puede incluir markdown y se mostrará en la documentación.28* `routes`: Las rutas de la aplicación, tomadas de `app.routes`. FastAPI las usa para recolectar las *path operations* registradas, incluidas las de los routers incluidos.2930/// tip | Detalles técnicos3132`app.routes` es un árbol de rutas de nivel inferior. Puede incluir rutas candidatas que FastAPI usa internamente para routers incluidos, no solo objetos `APIRoute` finales.3334Aun así puedes pasar `app.routes` a `get_openapi()`. FastAPI recorrerá ese árbol de rutas para recolectar las path operations efectivas.3536///3738/// note | Nota3940El parámetro `summary` está disponible en OpenAPI 3.1.0 y versiones superiores, soportado por FastAPI 0.99.0 y superiores.4142///4344## Sobrescribir los valores por defecto { #overriding-the-defaults }4546Usando la información anterior, puedes usar la misma función de utilidad para generar el esquema de OpenAPI y sobrescribir cada parte que necesites.4748Por ejemplo, vamos a añadir [la extensión OpenAPI de ReDoc para incluir un logo personalizado](https://github.com/Redocly/redoc/blob/main/docs/redoc-vendor-extensions.md#x-logo).4950### **FastAPI** normal { #normal-fastapi }5152Primero, escribe toda tu aplicación **FastAPI** como normalmente:5354{* ../../docs_src/extending_openapi/tutorial001_py310.py hl[1,4,7:9] *}5556### Generar el esquema de OpenAPI { #generate-the-openapi-schema }5758Luego, usa la misma función de utilidad para generar el esquema de OpenAPI, dentro de una función `custom_openapi()`:5960{* ../../docs_src/extending_openapi/tutorial001_py310.py hl[2,15:21] *}6162### Modificar el esquema de OpenAPI { #modify-the-openapi-schema }6364Ahora puedes añadir la extensión de ReDoc, agregando un `x-logo` personalizado al "objeto" `info` en el esquema de OpenAPI:6566{* ../../docs_src/extending_openapi/tutorial001_py310.py hl[22:24] *}6768### Cachear el esquema de OpenAPI { #cache-the-openapi-schema }6970Puedes usar la propiedad `.openapi_schema` como un "cache", para almacenar tu esquema generado.7172De esa forma, tu aplicación no tendrá que generar el esquema cada vez que un usuario abra la documentación de tu API.7374Se generará solo una vez, y luego se usará el mismo esquema cacheado para las siguientes requests.7576{* ../../docs_src/extending_openapi/tutorial001_py310.py hl[13:14,25:26] *}7778### Sobrescribir el método { #override-the-method }7980Ahora puedes reemplazar el método `.openapi()` por tu nueva función.8182{* ../../docs_src/extending_openapi/tutorial001_py310.py hl[29] *}8384### Revisa { #check-it }8586Una vez que vayas a [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) verás que estás usando tu logo personalizado (en este ejemplo, el logo de **FastAPI**):8788<img src="/img/tutorial/extending-openapi/image01.png">

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.

Generated by searchcode.com · powered by code_get_file + code_get_findings