Funcionalidades¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
Funcionalidades de FastAPI¶
FastAPI te ofrece lo siguiente:
Basado en estándares abiertos¶
- OpenAPI para la creación de APIs, incluyendo declaraciones depathoperations, parámetros, request bodies, seguridad, etc.
- Documentación automática de modelos de datos conJSON Schema (ya que OpenAPI en sí mismo está basado en JSON Schema).
- Diseñado alrededor de estos estándares, tras un estudio meticuloso. En lugar de ser una capa adicional.
- Esto también permite el uso degeneración de código cliente automática en muchos idiomas.
Documentación automática¶
Interfaces web de documentación y exploración de APIs interactivas. Como el framework está basado en OpenAPI, hay múltiples opciones, 2 incluidas por defecto.
- Swagger UI, con exploración interactiva, llama y prueba tu API directamente desde el navegador.

- Documentación alternativa de API conReDoc.

Solo Python moderno¶
Todo está basado en declaraciones estándar detipos en Python (gracias a Pydantic). Sin nueva sintaxis que aprender. Solo Python moderno estándar.
Si necesitas un repaso de 2 minutos sobre cómo usar tipos en Python (aunque no uses FastAPI), revisa el tutorial corto:Tipos en Python.
Escribes Python estándar con tipos:
fromdatetimeimportdatefrompydanticimportBaseModel# Declara una variable como un str# y obtiene soporte del editor dentro de la funcióndefmain(user_id:str):returnuser_id# Un modelo de PydanticclassUser(BaseModel):id:intname:strjoined:dateQue luego puede ser usado como:
my_user:User=User(id=3,name="John Doe",joined="2018-07-19")second_user_data={"id":4,"name":"Mary","joined":"2018-11-30",}my_second_user:User=User(**second_user_data)Información
**second_user_data significa:
Pasa las claves y valores del dictsecond_user_data directamente como argumentos de clave-valor, equivalente a:User(id=4, name="Mary", joined="2018-11-30")
Soporte del editor¶
Todo el framework fue diseñado para ser fácil e intuitivo de usar, todas las decisiones fueron probadas en múltiples editores incluso antes de comenzar el desarrollo, para asegurar la mejor experiencia de desarrollo.
En las encuestas a desarrolladores de Python, es claroque una de las funcionalidades más usadas es el "autocompletado".
Todo el frameworkFastAPI está basado para satisfacer eso. El autocompletado funciona en todas partes.
Rara vez necesitarás regresar a la documentación.
Aquí está cómo tu editor podría ayudarte:

- enPyCharm:

Obtendrás autocompletado en código que podrías considerar imposible antes. Por ejemplo, la claveprice dentro de un cuerpo JSON (que podría haber estado anidado) que proviene de un request.
No más escribir nombres de claves incorrectos, yendo de un lado a otro entre la documentación, o desplazándote hacia arriba y abajo para encontrar si finalmente usasteusername ouser_name.
Breve¶
Tienevalores por defecto sensatos para todo, con configuraciones opcionales en todas partes. Todos los parámetros se pueden ajustar finamente para hacer lo que necesitas y para definir el API que necesitas.
Pero por defecto, todo"simplemente funciona".
Validación¶
Validación para la mayoría (¿o todas?) de lostipos de datos de Python, incluyendo:
- Objetos JSON (
dict). - array JSON (
list) definiendo tipos de elementos. - Campos de string (
str), definiendo longitudes mínimas y máximas. - Números (
int,float) con valores mínimos y máximos, etc.
- Objetos JSON (
Validación para tipos más exóticos, como:
- URL.
- Email.
- UUID.
- ...y otros.
Toda la validación es manejada porPydantic, una herramienta bien establecida y robusta.
Seguridad y autenticación¶
Seguridad y autenticación integradas. Sin ningún compromiso con bases de datos o modelos de datos.
Todos los esquemas de seguridad definidos en OpenAPI, incluyendo:
- HTTP Básico.
- OAuth2 (también contokens JWT). Revisa el tutorial sobreOAuth2 con JWT.
- API keys en:
- Headers.
- Parámetros de query.
- Cookies, etc.
Además de todas las características de seguridad de Starlette (incluyendocookies de sesión).
Todo construido como herramientas y componentes reutilizables que son fáciles de integrar con tus sistemas, almacenes de datos, bases de datos relacionales y NoSQL, etc.
Inyección de dependencias¶
FastAPI incluye un sistema deInyección de Dependencias extremadamente fácil de usar, pero extremadamente potente.
- Incluso las dependencias pueden tener dependencias, creando una jerarquía o"grafo de dependencias".
- Todomanejado automáticamente por el framework.
- Todas las dependencias pueden requerir datos de los requests yaumentar las restricciones de la path operation y la documentación automática.
- Validación automática incluso para los parámetros depath operation definidos en las dependencias.
- Soporte para sistemas de autenticación de usuario complejos,conexiones a bases de datos, etc.
- Sin compromisos con bases de datos, frontends, etc. Pero fácil integración con todos ellos.
"Plug-ins" ilimitados¶
O de otra manera, no hay necesidad de ellos, importa y usa el código que necesitas.
Cualquier integración está diseñada para ser tan simple de usar (con dependencias) que puedes crear un "plug-in" para tu aplicación en 2 líneas de código usando la misma estructura y sintaxis utilizada para tuspath operations.
Probado¶
- 100% decobertura de tests.
- 100%anotada con tipos code base.
- Usado en aplicaciones en producción.
Funcionalidades de Starlette¶
FastAPI es totalmente compatible con (y está basado en)Starlette. Así que, cualquier código adicional de Starlette que tengas, también funcionará.
FastAPI es en realidad una subclase deStarlette. Así que, si ya conoces o usas Starlette, la mayoría de las funcionalidades funcionarán de la misma manera.
ConFastAPI obtienes todas las funcionalidades deStarlette (ya que FastAPI es simplemente Starlette potenciado):
- Rendimiento seriamente impresionante. Esuno de los frameworks de Python más rápidos disponibles, a la par deNodeJS yGo.
- Soporte paraWebSocket.
- Tareas en segundo plano en el mismo proceso.
- Eventos de inicio y apagado.
- Cliente de prueba basado en HTTPX.
- CORS, GZip, archivos estáticos, responses en streaming.
- Soporte paraSession y Cookie.
- Cobertura de tests del 100%.
- code base 100% anotada con tipos.
Funcionalidades de Pydantic¶
FastAPI es totalmente compatible con (y está basado en)Pydantic. Por lo tanto, cualquier código adicional de Pydantic que tengas, también funcionará.
Incluyendo paquetes externos también basados en Pydantic, comoORMs,ODMs para bases de datos.
Esto también significa que, en muchos casos, puedes pasar el mismo objeto que obtienes de un requestdirectamente a la base de datos, ya que todo se valida automáticamente.
Lo mismo aplica al revés, en muchos casos puedes simplemente pasar el objeto que obtienes de la base de datosdirectamente al cliente.
ConFastAPI obtienes todas las funcionalidades dePydantic (ya que FastAPI está basado en Pydantic para todo el manejo de datos):
- Sin complicaciones:
- Sin micro-lenguaje de definición de esquemas nuevo que aprender.
- Si conoces los tipos en Python sabes cómo usar Pydantic.
- Se lleva bien con tuIDE/linter/cerebro:
- Porque las estructuras de datos de pydantic son solo instances de clases que defines; autocompletado, linting, mypy y tu intuición deberían funcionar correctamente con tus datos validados.
- Validaestructuras complejas:
- Uso de modelos jerárquicos de Pydantic,
ListyDictdetypingde Python, etc. - Y los validadores permiten definir, verificar y documentar de manera clara y fácil esquemas de datos complejos como JSON Schema.
- Puedes tener objetos JSON profundamenteanidados y validarlos todos y anotarlos.
- Uso de modelos jerárquicos de Pydantic,
- Extensible:
- Pydantic permite definir tipos de datos personalizados o puedes extender la validación con métodos en un modelo decorados con el decorador validator.
- Cobertura de tests del 100%.







