Diario de Python | #7. Color Choice: armando las rutas

maxwellnewage

Maximiliano Burgos

Posted on February 3, 2023

Diario de Python | #7. Color Choice: armando las rutas

Ahora que terminé la parte de definir los modelos y la BD, voy a armar los endpoints correspondientes para cada entidad.

Pero antes de continuar, decidí cambiar un poco la arquitectura de las clases para separarlas por sección.

Nueva Arquitectura

Las carpetas quedaron de la siguiente manera:

- color
-- color_model.py: la clase Color que estaba en models.py
- vote
-- vote_model.py: la clase Vote que estaba en models.py
Enter fullscreen mode Exit fullscreen mode

Por supuesto, en create_db.py tuve que modificar los imports:

import color
import vote
Enter fullscreen mode Exit fullscreen mode

Se que esto puede parecer rebuscado si lo comparamos con la solución anterior, pero con el tiempo, a medida que creemos nuevos componentes, notarán que es una buena decisión.

Rutas

En principio voy a crear dos archivos de rutas (color_routes.py y vote_routes.py) los cuales contendrán un simple "hello" y se enlazarán a nuestras rutas en main:

from color.color_routes import color_router
from vote.vote_routes import vote_router

app.include_router(color_router)
app.include_router(vote_router)
Enter fullscreen mode Exit fullscreen mode

El import llama a "color.color_routes" porque existe un color_routes.py dentro de la carpeta color, la cual también contiene color_model.py. ¿Empiezan a notar la importancia de tener el código separado por entidades?

Ahora bien, dentro de color_routes.py estoy importando a color_router, el cual es mi objeto enrutador que compartiré con app. Veamos que tengo dentro:

from fastapi import APIRouter, status

color_router = APIRouter(
    prefix='/color',
    tags=['color']
)


@color_router.get('/', status_code=status.HTTP_200_OK)
async def home():
    return "hello api color!"

Enter fullscreen mode Exit fullscreen mode

El atributo "prefix" será el encargado de darnos una url del estilo "http://127.0.0.1:8000/color" y sobre los tags, veremos posteriormente la utilidad de este atributo.

Como ven, también cambia el get que antes era "app", porque nuestro enrutador ahora es color_router.

Por cierto, el "@" implica que se trata de un Decorator (o decorador), una funcionalidad de Python que permite generar código adicional en tiempo de ejecución. Más adelante los estudiaremos en detalle.

Ahora que ya tenemos implementado nuestros enrutadores, podemos probarlos corriendo el servidor y llamando a "http://127.0.0.1:8000/color" o "http://127.0.0.1:8000/vote", dado que hicimos lo mismo en los dos. Esto dará como respuesta un "hello api color!" o "hello api vote!" según la ruta que utilicemos.

Conclusiones

Ahora que tenemos las rutas preparadas, lo siguiente será generar los endpoints correspondientes para cada entidad; los cuales harán consultas a nuestra base de datos mediante un objeto Session. Ya lo veremos en la próxima entrega.

💖 💪 🙅 🚩
maxwellnewage
Maximiliano Burgos

Posted on February 3, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related