Estas últimas semanas estuve investigando la mejor manera de trabajar con APIs en Python. Varias opciones me llevaron a Django o Flask, pero un comentario de Reddit me condujo a un nuevo framework que no conocía: FastAPI.
El papá del monstruo
Sebastián Ramírez es quizá un nombre que no les recuerde mucho, pero resulta que es uno de los mayores exponentes en el desarrollo web en Python.
Es el creador de FastAPI, Typer y SQLModel; tecnologías que simplifican el trabajo de las librerías anteriormente mencionadas.
Por cierto, también tiene su blog en esta comunidad. Escribe en inglés, pero es muy claro tanto en su narración como las ideas que expresa, las cuales son opiniones técnicas y de la industria.
Tiene un artículo sobre cómo contribuir al software libre que me gustó bastante.
Mi aprendizaje
Luego de navegar por la documentación y por YouTube, encontré dos videos que me ayudaron mucho a comenzar la creación de mi primer API.
El primero era de MoureDev, el cual me sirvió como una introducción detallada sobre la teoría de APIs, Paths, Querys, Routers, recursos estáticos, OAuth2 JWT, persistencia con MongoDB y despliegue de la aplicación, entre otros tópicos.
Luego armé una API con el contexto de una pizzería que necesitaba un sistema de gestión de pedidos acompañado de un tutorial de Ssali Jonathan. No voy a mentirles: tuve que cambiar muchas cosas que no me funcionaban; y mejorar otras que me parecían malas prácticas. Aún así, me parece un buen instructor:
Mi versión final la pueden encontrar en este repositorio de GitHub. Por supuesto, son libres de hacer un Fork para seguir mejorando mi proyecto.
Inicializar la BD
Antes de levantar la API, hay que tener un servidor de Postgresql funcionando. Luego hay que correr el script init_db.py, el cual creará todos los esquemas de tablas que hereden de la clase Base, los cuales podemos encontrar en models.py.
Configuración en PyCharm
Para poder correr la API, necesitamos un servidor Uvicorn funcionando. Esta es la configuración que armé para correrlo:
Los campos más importantes son Module name, Parameters y Working Directory.
Conclusiones
Quise compartirles este proyecto como una demostración de lo que se puede lograr estudiando e implementando FastAPI en un mes. Considero que este framework tiene un potencial enorme, el cual todavía no he exprimido completamente. Pienso hacerlo en un par de proyectos que tengo en mente y voy a ir compartiendo con ustedes a lo largo del diario.
Top comments (0)