Interfaces de usuario web interactivas para documentación y exploración de APIs. 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.
Todo está basado en declaraciones estándar de tipos de Python (gracias a Pydantic). No hay nueva sintaxis que aprender. Solo Python moderno estándar.
Si necesitas un repaso de 2 minutos sobre cómo usar tipos de Python (incluso si no usas FastAPI), revisa el breve tutorial: Tipos de Python.
Escribes Python estándar con tipos:
fromdatetimeimportdatefrompydanticimportBaseModel# Declare a variable as a str# and get editor support inside the functiondefmain(user_id:str):returnuser_id# A Pydantic modelclassUser(BaseModel):id:intname:strjoined:date
Pasa las claves y valores del dict second_user_data directamente como argumentos clave-valor, equivalente a: User(id=4, name="Mary", joined="2018-11-30")
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 empezar el desarrollo, para asegurar la mejor experiencia de desarrollo.
Obtendrás autocompletado en código que antes podrías haber considerado imposible. Por ejemplo, la clave price dentro de un cuerpo JSON (que podría haber estado anidado) que viene de una petición.
No más escribir nombres de claves incorrectos, yendo y viniendo entre la documentación, o desplazándote arriba y abajo para encontrar si finalmente usaste username o user_name.
Tiene valores por defecto sensatos para todo, con configuraciones opcionales en todas partes. Todos los parámetros pueden ser ajustados para hacer lo que necesitas y para definir la API que necesitas.
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 Basic.
OAuth2 (también con tokens JWT). Revisa el tutorial sobre OAuth2 con JWT.
API keys in:
Headers.
Parámetros de query.
Cookies, etc.
Más todas las características de seguridad de Starlette (incluyendo cookies 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.
O, en otras palabras, no necesitan, 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 usada para tus operaciones de ruta.
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 de Starlette. Así que, si ya conoces o usas Starlette, la mayoría de la funcionalidad funcionará de la misma manera.
Con FastAPI obtienes todas las características de Starlette (ya que FastAPI es simplemente Starlette con esteroides):
FastAPI es totalmente compatible con (y está basado en) Pydantic. Así que, cualquier código adicional de Pydantic que tengas, también funcionará.
Incluyendo librerías externas también basadas en Pydantic, como ORMs y ODMs para bases de datos.
Esto también significa que en muchos casos puedes pasar el mismo objeto que obtienes de una petición directamente a la base de datos, ya que todo es validado automáticamente.
Lo mismo aplica en sentido contrario, en muchos casos puedes simplemente pasar el objeto que obtienes de la base de datos directamente al cliente.
Con FastAPI obtienes todas las características de Pydantic (ya que FastAPI está basado en Pydantic para todo el manejo de datos):
No brainfuck:
No hay que aprender un nuevo micro-lenguaje de definición de esquemas.
Si conoces los tipos de Python sabes cómo usar Pydantic.
Plays nicely with your IDE/linter/brain:
Como las estructuras de datos de pydantic son simplemente instancias de clases que defines; el autocompletado, linting, mypy y tu intuición deberían funcionar correctamente con tus datos validados.
Validate complex structures:
Uso de modelos jerárquicos de Pydantic, List y Dict del typing de Python, etc.
Y los validadores permiten que los esquemas de datos complejos sean definidos, verificados y documentados de forma clara y sencilla como JSON Schema.
Puedes tener objetos JSON anidados profundamente y tenerlos todos validados y anotados.
Extensible:
Pydantic permite definir tipos de datos personalizados o puedes extender la validación con métodos en un modelo decorado con el decorador validator.