///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Tener una interfaz de usuario web de documentación automática de APIs.
Dada la simplicidad de Flask, parecía una buena opción para construir APIs. Lo siguiente a encontrar era un "Django REST Framework" para Flask.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Ser un micro-framework. Haciendo fácil mezclar y combinar las herramientas y partes necesarias.
Mira las similitudes entre `requests.get(...)` y `@app.get(...)`.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
* Tener un API simple e intuitivo.
* Usar nombres de métodos HTTP (operaciones) directamente, de una manera sencilla e intuitiva.
Es por eso que cuando se habla de la versión 2.0 es común decir "Swagger", y para la versión 3+ "OpenAPI".
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Adoptar y usar un estándar abierto para especificaciones de API, en lugar de usar un esquema personalizado.
Pero fue creado antes de que existieran las anotaciones de tipos en Python. Así que, para definir cada <dfn title="la definición de cómo deberían formarse los datos">esquema</dfn> necesitas usar utilidades y clases específicas proporcionadas por Marshmallow.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Usar código para definir "esquemas" que proporcionen tipos de datos y validación automáticamente.
Es una gran herramienta y la he usado mucho también, antes de tener **FastAPI**.
-/// info | Información
+/// note | Nota
Webargs fue creada por los mismos desarrolladores de Marshmallow.
///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Tener validación automática de datos entrantes en una request.
Es un plug-in para muchos frameworks (y hay un plug-in para Starlette también).
-La manera en que funciona es que escribes la definición del esquema usando el formato YAML dentro del docstring de cada función que maneja una ruta.
+La manera en que funciona es que escribes la definición del esquema usando el formato YAML dentro del docstring de cada función que maneja un path.
Y genera esquemas OpenAPI.
El editor no puede ayudar mucho con eso. Y si modificamos parámetros o esquemas de Marshmallow y olvidamos también modificar ese docstring YAML, el esquema generado estaría obsoleto.
-/// info | Información
+/// note | Nota
APISpec fue creado por los mismos desarrolladores de Marshmallow.
///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Soportar el estándar abierto para APIs, OpenAPI.
Y estos mismos generadores de full-stack fueron la base de los [Generadores de Proyectos **FastAPI**](project-generation.md).
-/// info | Información
+/// note | Nota
Flask-apispec fue creado por los mismos desarrolladores de Marshmallow.
///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Generar el esquema OpenAPI automáticamente, desde el mismo código que define la serialización y validación.
No puede manejar muy bien modelos anidados. Entonces, si el cuerpo JSON en la request es un objeto JSON que tiene campos internos que a su vez son objetos JSON anidados, no puede ser documentado y validado apropiadamente.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Usar tipos de Python para tener un gran soporte del editor.
///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Encontrar una manera de tener un rendimiento impresionante.
Por lo tanto, la validación de datos, la serialización y la documentación, tienen que hacerse en código, no automáticamente. O tienen que implementarse como un framework sobre Falcon, como Hug. Esta misma distinción ocurre en otros frameworks que se inspiran en el diseño de Falcon, de tener un objeto request y un objeto response como parámetros.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Buscar maneras de obtener un gran rendimiento.
El sistema de inyección de dependencias requiere pre-registrar las dependencias y las dependencias se resuelven en base a los tipos declarados. Por lo tanto, no es posible declarar más de un "componente" que proporcione cierto tipo.
-Las rutas se declaran en un solo lugar, usando funciones declaradas en otros lugares (en lugar de usar decoradores que pueden colocarse justo encima de la función que maneja el endpoint). Esto se acerca más a cómo lo hace Django que a cómo lo hace Flask (y Starlette). Separa en el código cosas que están relativamente acopladas.
+Los paths se declaran en un solo lugar, usando funciones declaradas en otros lugares (en lugar de usar decoradores que pueden colocarse justo encima de la función que maneja el endpoint). Esto se acerca más a cómo lo hace Django que a cómo lo hace Flask (y Starlette). Separa en el código cosas que están relativamente acopladas.
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Definir validaciones extra para tipos de datos usando el valor "default" de los atributos del modelo. Esto mejora el soporte del editor y no estaba disponible en Pydantic antes.
Dado que se basa en el estándar previo para frameworks web Python sincrónicos (WSGI), no puede manejar Websockets y otras cosas, aunque aún así tiene un alto rendimiento también.
-/// info | Información
+/// note | Nota
Hug fue creado por Timothy Crosley, el mismo creador de [`isort`](https://github.com/timothycrosley/isort), una gran herramienta para ordenar automáticamente imports en archivos Python.
///
-/// check | Ideas que inspiraron a **FastAPI**
+/// tip | Ideas que inspiraron a **FastAPI**
Hug inspiró partes de APIStar, y fue una de las herramientas que encontré más prometedoras, junto a APIStar.
Ahora APIStar es un conjunto de herramientas para validar especificaciones OpenAPI, no un framework web.
-/// info | Información
+/// note | Nota
APIStar fue creado por Tom Christie. El mismo que creó:
///
-/// check | Inspiró a **FastAPI** a
+/// tip | Inspiró a **FastAPI** a
Existir.
Es comparable a Marshmallow. Aunque es más rápido que Marshmallow en benchmarks. Y como está basado en las mismas anotaciones de tipos de Python, el soporte del editor es estupendo.
-/// check | **FastAPI** lo usa para
+/// tip | **FastAPI** lo usa para
Manejar toda la validación de datos, serialización de datos y documentación automática de modelos (basada en JSON Schema).
///
-/// check | **FastAPI** lo usa para
+/// tip | **FastAPI** lo usa para
Manejar todas las partes web centrales. Añadiendo funcionalidades encima.
Es el servidor recomendado para Starlette y **FastAPI**.
-/// check | **FastAPI** lo recomienda como
+/// tip | **FastAPI** lo recomienda como
El servidor web principal para ejecutar aplicaciones **FastAPI**.
-# Ayuda a FastAPI - Consigue Ayuda { #help-fastapi-get-help }
+# Ayuda { #help }
-¿Te gusta **FastAPI**?
+¿Te gustaría ayudar a FastAPI o conseguir ayuda sobre FastAPI?
-¿Te gustaría ayudar a FastAPI, a otros usuarios y al autor?
-
-¿O te gustaría conseguir ayuda con **FastAPI**?
-
-Hay formas muy sencillas de ayudar (varias implican solo uno o dos clics).
-
-Y también hay varias formas de conseguir ayuda.
+Hay formas muy sencillas de ayudar y de conseguir ayuda.
## Suscríbete al boletín { #subscribe-to-the-newsletter }
* Cambios importantes 🚨
* Consejos y trucos ✅
-## Sigue a FastAPI en X (Twitter) { #follow-fastapi-on-x-twitter }
+## Sigue a FastAPI en línea { #follow-fastapi-online }
-[Sigue a @fastapi en **X (Twitter)**](https://x.com/fastapi) para obtener las últimas noticias sobre **FastAPI**. 🐦
+Puedes seguir a **FastAPI** en línea en varios lugares:
+
+* [@fastapi en **X / Twitter**](https://x.com/fastapi)
+* [@fastapi.tiangolo.com en **Bluesky**](https://bsky.app/profile/fastapi.tiangolo.com)
+* [FastAPI en **LinkedIn**](https://www.linkedin.com/company/fastapi/)
## Dale una estrella a **FastAPI** en GitHub { #star-fastapi-in-github }
Al hacerlo, recibirás notificaciones (en tu email) cada vez que haya un nuevo lanzamiento (una nueva versión) de **FastAPI** con correcciones de bugs y nuevas funcionalidades.
-## Conéctate con el autor { #connect-with-the-author }
-
-Puedes conectar [conmigo (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), el autor.
-
-Puedes:
-
-* [Seguirme en **GitHub**](https://github.com/tiangolo).
- * Ver otros proyectos de Código Abierto que he creado y que podrían ayudarte.
- * Seguirme para ver cuándo creo un nuevo proyecto de Código Abierto.
-* [Seguirme en **X (Twitter)**](https://x.com/tiangolo) o [Mastodon](https://fosstodon.org/@tiangolo).
- * Contarme cómo usas FastAPI (me encanta oír eso).
- * Enterarte cuando hago anuncios o lanzo nuevas herramientas.
- * También puedes [seguir @fastapi en X (Twitter)](https://x.com/fastapi) (una cuenta aparte).
-* [Seguirme en **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
- * Enterarte cuando hago anuncios o lanzo nuevas herramientas (aunque uso X (Twitter) más a menudo 🤷♂).
-* Leer lo que escribo (o seguirme) en [**Dev.to**](https://dev.to/tiangolo) o [**Medium**](https://medium.com/@tiangolo).
- * Leer otras ideas, artículos, y leer sobre las herramientas que he creado.
- * Seguirme para leer lo que publico nuevo.
-
-## Twittea sobre **FastAPI** { #tweet-about-fastapi }
-
-[Twittea sobre **FastAPI**](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi) y dime a mí y a otros por qué te gusta. 🎉
-
-Me encanta escuchar cómo se está utilizando **FastAPI**, qué te ha gustado, en qué proyecto/empresa lo estás usando, etc.
+## Sigue al autor { #follow-the-author }
-## Vota por FastAPI { #vote-for-fastapi }
+Puedes seguir [a mí (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), el autor, en algunos lugares, para enterarte cuando tenga noticias para compartir sobre FastAPI y amigos:
-* [Vota por **FastAPI** en Slant](https://www.slant.co/options/34241/~fastapi-review).
-* [Vota por **FastAPI** en AlternativeTo](https://alternativeto.net/software/fastapi/about/).
-* [Di que usas **FastAPI** en StackShare](https://stackshare.io/pypi-fastapi).
+* [@tiangolo en **GitHub**](https://github.com/tiangolo).
+* [@tiangolo en **X (Twitter)**](https://x.com/tiangolo)
+* [@tiangolo.com en **Bluesky**](https://bsky.app/profile/tiangolo.com)
+* [@tiangolo en **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
## Ayuda a otros con preguntas en GitHub { #help-others-with-questions-in-github }
-Puedes intentar ayudar a otros con sus preguntas en:
+Puedes intentar ayudar a otros con sus preguntas en [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered).
-* [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered)
-* [GitHub Issues](https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+)
-
-En muchos casos, probablemente ya conozcas la respuesta a esas preguntas. 🤓
+En muchos casos, puede que ya conozcas la respuesta a esas preguntas. 🤓
Si estás ayudando mucho a la gente con sus preguntas, te convertirás en un [FastAPI Expert](fastapi-people.md#fastapi-experts) oficial. 🎉
-Solo recuerda, el punto más importante es: trata de ser amable. La gente llega con sus frustraciones y, en muchos casos, no pregunta de la mejor manera, pero haz todo lo posible por ser amable. 🤗
-
-La idea es que la comunidad de **FastAPI** sea amable y acogedora. Al mismo tiempo, no aceptes acoso o comportamiento irrespetuoso hacia los demás. Tenemos que cuidarnos unos a otros.
-
----
-
-Aquí te explico cómo ayudar a otros con preguntas (en discusiones o issues):
-
-### Entiende la pregunta { #understand-the-question }
-
-* Revisa si puedes entender cuál es el **propósito** y el caso de uso de la persona que pregunta.
-
-* Luego revisa si la pregunta (la gran mayoría son preguntas) es **clara**.
-
-* En muchos casos, la pregunta planteada es sobre una solución imaginaria del usuario, pero podría haber una **mejor**. Si puedes entender mejor el problema y el caso de uso, podrías sugerir una mejor **solución alternativa**.
-
-* Si no puedes entender la pregunta, pide más **detalles**.
-
-### Reproduce el problema { #reproduce-the-problem }
+Solo recuerda, el punto más importante es: intenta ser amable. 🤗
-En la mayoría de los casos y preguntas hay algo relacionado con el **código original** de la persona.
+### Cómo ayudar { #how-to-help }
-En muchos casos solo copiarán un fragmento del código, pero eso no es suficiente para **reproducir el problema**.
-
-* Puedes pedirles que proporcionen un [ejemplo mínimo, reproducible](https://stackoverflow.com/help/minimal-reproducible-example), que puedas **copiar-pegar** y ejecutar localmente para ver el mismo error o comportamiento que están viendo, o para entender mejor su caso de uso.
-
-* Si te sientes muy generoso, puedes intentar **crear un ejemplo** así tú mismo, solo basado en la descripción del problema. Solo ten en cuenta que esto podría llevar mucho tiempo y podría ser mejor pedirles que aclaren el problema primero.
-
-### Sugerir soluciones { #suggest-solutions }
-
-* Después de poder entender la pregunta, puedes darles una posible **respuesta**.
-
-* En muchos casos, es mejor entender su **problema subyacente o caso de uso**, porque podría haber una mejor manera de resolverlo que lo que están intentando hacer.
-
-### Pide cerrar { #ask-to-close }
-
-Si responden, hay una alta probabilidad de que hayas resuelto su problema, felicidades, ¡**eres un héroe**! 🦸
-
-* Ahora, si eso resolvió su problema, puedes pedirles que:
-
- * En GitHub Discussions: marquen el comentario como la **respuesta**.
- * En GitHub Issues: **cierren** el issue.
-
-## Observa el repositorio de GitHub { #watch-the-github-repository }
-
-Puedes "observar" FastAPI en GitHub (haciendo clic en el botón "watch" en la parte superior derecha): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). 👀
-
-Si seleccionas "Watching" en lugar de "Releases only", recibirás notificaciones cuando alguien cree un nuevo issue o pregunta. También puedes especificar que solo deseas que te notifiquen sobre nuevos issues, discusiones, PRs, etc.
-
-Luego puedes intentar ayudarlos a resolver esas preguntas.
+Sigue la [guía sobre cómo ayudar](https://tiangolo.com/open-source/help/#help-others-with-questions-in-github) aquí.
## Haz preguntas { #ask-questions }
-Puedes [crear una nueva pregunta](https://github.com/fastapi/fastapi/discussions/new?category=questions) en el repositorio de GitHub, por ejemplo, para:
+Puedes [crear una nueva pregunta](https://github.com/fastapi/fastapi/discussions/new?category=questions) en el repositorio de GitHub, por ejemplo para:
* Hacer una **pregunta** o preguntar sobre un **problema**.
* Sugerir una nueva **funcionalidad**.
-**Nota**: si lo haces, entonces te voy a pedir que también ayudes a otros. 😉
-
-## Revisa Pull Requests { #review-pull-requests }
-
-Puedes ayudarme a revisar pull requests de otros.
-
-De nuevo, por favor, haz tu mejor esfuerzo por ser amable. 🤗
-
----
-
-Aquí está lo que debes tener en cuenta y cómo revisar un pull request:
-
-### Entiende el problema { #understand-the-problem }
-
-* Primero, asegúrate de **entender el problema** que el pull request está intentando resolver. Podría tener una discusión más larga en una GitHub Discussion o issue.
-
-* También hay una buena posibilidad de que el pull request no sea realmente necesario porque el problema se puede resolver de una manera **diferente**. Entonces puedes sugerir o preguntar sobre eso.
-
-### No te preocupes por el estilo { #dont-worry-about-style }
-
-* No te preocupes demasiado por cosas como los estilos de los mensajes de commit, yo haré squash y merge personalizando el commit manualmente.
-
-* Tampoco te preocupes por las reglas de estilo, hay herramientas automatizadas verificando eso.
-
-Y si hay alguna otra necesidad de estilo o consistencia, pediré directamente eso, o agregaré commits encima con los cambios necesarios.
-
-### Revisa el código { #check-the-code }
-
-* Revisa y lee el código, ve si tiene sentido, **ejecútalo localmente** y ve si realmente resuelve el problema.
-
-* Luego **comenta** diciendo que hiciste eso, así sabré que realmente lo revisaste.
-
-/// info | Información
-
-Desafortunadamente, no puedo simplemente confiar en PRs que solo tienen varias aprobaciones.
-
-Varias veces ha sucedido que hay PRs con 3, 5 o más aprobaciones, probablemente porque la descripción es atractiva, pero cuando reviso los PRs, en realidad están rotos, tienen un bug, o no resuelven el problema que dicen resolver. 😅
-
-Así que, es realmente importante que realmente leas y ejecutes el código, y me hagas saber en los comentarios que lo hiciste. 🤓
-
-///
-
-* Si el PR se puede simplificar de alguna manera, puedes pedir eso, pero no hay necesidad de ser demasiado exigente, podría haber muchos puntos de vista subjetivos (y yo tendré el mío también 🙈), así que es mejor si puedes centrarte en las cosas fundamentales.
-
-### Tests { #tests }
-
-* Ayúdame a verificar que el PR tenga **tests**.
-
-* Verifica que los tests **fallen** antes del PR. 🚨
-
-* Luego verifica que los tests **pasen** después del PR. ✅
-
-* Muchos PRs no tienen tests, puedes **recordarles** que agreguen tests, o incluso puedes **sugerir** algunos tests tú mismo. Eso es una de las cosas que consume más tiempo y puedes ayudar mucho con eso.
-
-* Luego también comenta lo que intentaste, de esa manera sabré que lo revisaste. 🤓
-
-## Crea un Pull Request { #create-a-pull-request }
-
-Puedes [contribuir](contributing.md) al código fuente con Pull Requests, por ejemplo:
-
-* Para corregir un error tipográfico que encontraste en la documentación.
-* Para compartir un artículo, video o podcast que creaste o encontraste sobre FastAPI [editando este archivo](https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml).
- * Asegúrate de agregar tu enlace al inicio de la sección correspondiente.
-* Para ayudar a [traducir la documentación](contributing.md#translations) a tu idioma.
- * También puedes ayudar a revisar las traducciones creadas por otros.
-* Para proponer nuevas secciones de documentación.
-* Para corregir un issue/bug existente.
- * Asegúrate de agregar tests.
-* Para agregar una nueva funcionalidad.
- * Asegúrate de agregar tests.
- * Asegúrate de agregar documentación si es relevante.
-
-## Ayuda a Mantener FastAPI { #help-maintain-fastapi }
-
-¡Ayúdame a mantener **FastAPI**! 🤓
-
-Hay mucho trabajo por hacer, y para la mayoría de ello, **TÚ** puedes hacerlo.
-
-Las tareas principales que puedes hacer ahora son:
-
-* [Ayudar a otros con preguntas en GitHub](#help-others-with-questions-in-github) (ver la sección arriba).
-* [Revisar Pull Requests](#review-pull-requests) (ver la sección arriba).
-
-Esas dos tareas son las que **consumen más tiempo**. Ese es el trabajo principal de mantener FastAPI.
-
-Si puedes ayudarme con eso, **me estás ayudando a mantener FastAPI** y asegurando que siga **avanzando más rápido y mejor**. 🚀
-
## Únete al chat { #join-the-chat }
Únete al servidor de chat 👥 [Discord](https://discord.gg/VQjSZaeJmf) 👥 y charla con otros en la comunidad de FastAPI.
/// tip | Consejo
-Para preguntas, házlas en [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/new?category=questions), hay muchas más probabilidades de que recibas ayuda de parte de los [FastAPI Experts](fastapi-people.md#fastapi-experts).
+Para preguntas, hazlas en GitHub Discussions, hay muchas más probabilidades de que recibas ayuda.
Usa el chat solo para otras conversaciones generales.
Ten en cuenta que dado que los chats permiten una "conversación más libre", es fácil hacer preguntas que son demasiado generales y más difíciles de responder, por lo que es posible que no recibas respuestas.
-En GitHub, la plantilla te guiará para escribir la pregunta correcta para que puedas obtener más fácilmente una buena respuesta, o incluso resolver el problema por ti mismo antes de preguntar. Y en GitHub puedo asegurarme de responder siempre todo, incluso si lleva tiempo. No puedo hacer eso personalmente con los sistemas de chat. 😅
-
-Las conversaciones en los sistemas de chat tampoco son tan fácilmente buscables como en GitHub, por lo que las preguntas y respuestas podrían perderse en la conversación. Y solo las que están en GitHub cuentan para convertirse en un [FastAPI Expert](fastapi-people.md#fastapi-experts), por lo que probablemente recibirás más atención en GitHub.
-
-Por otro lado, hay miles de usuarios en los sistemas de chat, por lo que hay muchas posibilidades de que encuentres a alguien con quien hablar allí, casi todo el tiempo. 😄
-
-## Hazte sponsor del autor { #sponsor-the-author }
-
-Si tu **producto/empresa** depende de o está relacionado con **FastAPI** y quieres llegar a sus usuarios, puedes hacerte sponsor del autor (de mí) a través de [GitHub sponsors](https://github.com/sponsors/tiangolo). Según el nivel, podrías obtener algunos beneficios extra, como una insignia en la documentación. 🎁
-
----
+En GitHub, la plantilla te guiará para escribir la pregunta correcta para que puedas obtener más fácilmente una buena respuesta, o incluso resolver el problema tú mismo antes de preguntar.
-¡Gracias! 🚀
+Las conversaciones en los sistemas de chat tampoco son tan fáciles de buscar como en GitHub; se pierden.