Documentación interactiva de la API e interfaces web de exploración. Hay múltiples opciones, dos incluidas por defecto, porque el framework está basado en OpenAPI.
Swagger UI, con exploración interactiva, llama y prueba tu API directamente desde tu navegador.
Todo está basado en las declaraciones de tipo de Python 3.8 estándar (gracias a Pydantic). No necesitas aprender una sintaxis nueva, solo Python moderno.
Si necesitas un repaso de 2 minutos de cómo usar los tipos de Python (así no uses FastAPI) prueba el tutorial corto: Python Types.
Escribes Python estándar con tipos así:
fromdatetimeimportdatefrompydanticimportBaseModel# Declaras la variable como un str# y obtienes soporte del editor dentro de la funcióndefmain(user_id:str):returnuser_id# Un modelo de PydanticclassUser(BaseModel):id:intname:strjoined:date
Pasa las keys y los valores del dict second_user_data directamente como argumentos de key-value, equivalente a: User(id=4, name="Mary", joined="2018-11-30")
El framework fue diseñado en su totalidad para ser fácil e intuitivo de usar. Todas las decisiones fueron probadas en múltiples editores antes de comenzar el desarrollo para asegurar la mejor experiencia de desarrollo.
Obtendrás completado para tu código que podrías haber considerado imposible antes. Por ejemplo, el key price dentro del JSON body (que podría haber estado anidado) que viene de un request.
Ya no pasará que escribas los nombres de key equivocados, o que tengas que revisar constantemente la documentación o desplazarte arriba y abajo para saber si usaste username o user_name.
Tiene configuraciones por defecto razonables para todo, con configuraciones opcionales en todas partes. Todos los parámetros pueden ser ajustados para tus necesidades y las de tu API.
La seguridad y la autenticación están integradas. Sin ningún compromiso con bases de datos ni modelos de datos.
Todos los schemes de seguridad están definidos en OpenAPI incluyendo:
HTTP Basic.
OAuth2 (también con JWT tokens). Prueba el tutorial en OAuth2 with JWT.
API keys en:
Headers.
Parámetros de Query.
Cookies, etc.
Más todas las características de seguridad de Starlette (incluyendo session cookies).
Todo ha sido construido como herramientas y componentes reutilizables que son fácilmente integrados con tus sistemas, almacenamiento de datos, bases de datos relacionales y no relacionales, etc.
O dicho de otra manera, no hay necesidad para "plug-ins". Importa y usa el código que necesites.
Cualquier integración está diseñada para que sea tan sencilla de usar (con dependencias) que puedas crear un "plug-in" para tu aplicación en dos líneas de código usando la misma estructura y sintaxis que usaste para tus path operations.
FastAPI está basado y es completamente compatible con Starlette. Tanto así, que cualquier código de Starlette que tengas también funcionará.
FastAPI es realmente una sub-clase de Starlette. Así que, si ya conoces o usas Starlette, muchas de las características funcionarán de la misma manera.
Con FastAPI obtienes todas las características de Starlette (porque FastAPI es simplemente Starlette en esteroides):
FastAPI está basado y es completamente compatible con Pydantic. Tanto así, que cualquier código de Pydantic que tengas también funcionará.
Esto incluye a librerías externas 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 obtuviste de un request directamente a la base de datos, dado que todo es validado automáticamente.
Lo mismo aplica para el sentido contrario. En muchos casos puedes pasar el objeto que obtienes de la base de datos directamente al cliente.
Con FastAPI obtienes todas las características de Pydantic (dado que FastAPI está basado en Pydantic para todo el manejo de datos):
Sin dificultades para entender:
No necesitas aprender un nuevo micro-lenguaje de definición de schemas.
Si sabes tipos de Python, sabes cómo usar Pydantic.
Interactúa bien con tu IDE/linter/cerebro:
Porque las estructuras de datos de Pydantic son solo instances de clases que tu defines, el auto-completado, el linting, mypy y tu intuición deberían funcionar bien con tus datos validados.
Valida estructuras complejas:
Usa modelos jerárquicos de modelos de Pydantic, typing de Python, List y Dict, etc.
Los validadores también permiten que se definan fácil y claramente schemas complejos de datos. Estos son chequeados y documentados como JSON Schema.
Puedes tener objetos de JSON profundamente anidados y que todos sean validados y anotados.
Extensible:
Pydantic permite que se definan tipos de datos a la medida o puedes extender la validación con métodos en un modelo decorado con el decorador de validación.