Resumen

En este blog explicaremos acerca de la estructura de apirouter en la implementación con el framework de fastapi, el cual nos permite una utilización muy sencilla para crear Api’s y con esta estructura es posible una modulación de paquetes para que nuestro proyecto sea escalable y fácil de entender, sin pender el rendimiento del mismo.

Detalles

Con previo conocimiento en python para implementar este framework, comenzaremos instalando el ambiente necesario a traves del gestor de paquetes pip.

-pip install fastapi

-pip install «uvicorn[standard]

Con estas previas instalaciones , creamos nuestro archivo principal de donde empezara la api,

en el cual se implementara paquetes de routes , modules, providers. Según la necesidad del caso.

Adjunto el main con lo básico para empezar:

from fastapi import FastAPI

app = FastAPI()

@app.get(«/»)
def read_root():
return {«Hello»: «World»}

Podemos ver la instancia de fastapi y el objeto llamado app. el cual obtendra nuestra rutas .y probar esto en nuestro navegador para saber que todo esta bien , con el siguiente comando en nuestra terminal .

-uvicorn main:app –reload

El cual arroja la siguiente información en la terminal.

INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting for application startup.
INFO: Application startup complete.

Nos dirigimos a nuestro localhost/docs, esto nos mostrara una documentación de las rutas realizadas. y se vera de la siguiente manera.

Si logramos llegar a este paso, excelente, ahora implementamos la estructura

El archivo main.py  donde arranca nuestra aplicación, luego las rutas de cada modulo serán aisladas para trabajar de forma individual y fácil de escalar.

La carpeta models, corresponde a las clases de nuestra entidades, en un posible caso que estemos programando con algún ORM o programación orientada objetos. dentro de esta carpetas se almacena nuestras clases. un ejemplo opcional como quedaría.

Ésto es opcional.

En la siguiente carpeta Providers se encuentra la conexion a la base de datos y esquemas para la preparación en un uso de ORM por ejemplo SqlAlchemy .

Es opcional si deseas conectar con una base de datos y hacer utilización de un orm.

Un esquema de la clase User:

Después de haber explicado cada una de las carpetas, procedemos a la creación de rutas de la Api.

Con la siguiente estructura dentro de la carpeta Routes, el archivo __init__.py , este ira vació, pero lo que indica es un modulo y no una carpeta común.

El ejemplo del mainuser.py:

Indispensable las lineas 1  . el resto es para conexiones sqlalchemy , creacion de sesiones y manejamiento de datos con una clase .

notamos en la linea 12.

routeruser = APIRouter(prefix=»/user»)
Este se convierte en un objeto APIRouter, y el parametro sera nuestra ruta despues a la que accedemos. A partir del mismo, creamos rutas segun la necesidad, como en la linea 27 y usando los metodos http get, put, delete post. Por ejemplo :

Procedemos a registrar nuestra Ruta en el main, donde arranca la app.

Para incluir los objetos a las rutas, se evalua a traves del modulo, luego una subcarpeta en caso de existir, y por ultimo el archivo que la contiene , en este caso es mainuser.py al cual debo ponerle un alias con la palabra reservada as .

Ahi solo las importe, procedamos a incluirlas en las rutas.

Luego de la creacion del objeto tipo FastApi y algunos parametros, podemos incluir las rutas que deseamos,

Haciendo un llamado al objeto y el metodo include(), el cual espera un apirouter en sus parametros , por lo siguiente procedemos con el alias y llamamos al objeto APIRouter creado en el arhivo mainuser.py

Al final nuestro archivo main.py quedara algo asi. con ciertas implementaciones pero muy limpio de rutas y modulos por separado.

En la linea 28 en un redireccionamiento a la documentacion cada vez que ingrese al sitio.

Enlaces o mas información.

https://github.com/vidal1101/Flutter-FastApi

En este repositorio podran encontrar todo el codigo fuente y estructura junto a una app creada en flutter.

_______________________________________________________________________________________

Para mayor información contactar a servicio@rolosa.com

 


0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *