DEV Community

Maximiliano Burgos
Maximiliano Burgos

Posted on

 

Diario de Python | #4. Probando FastAPI para desarrollar APIs

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:

Configuración PyCharm Uvicorn

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)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.