Laboratorio2 Fastapi
Laboratorio2 Fastapi
Laboratorio2 Fastapi
Conforme con la guía de implementación del servicio, considerar las diferentes definición y temas
consultados por ustedes para contestar las siguientes preguntas.
• En los últimos años el lenguaje Python ha tomado bastante más relevancia en el campo de la
Inteligencia Artificial / Machine Learning y en la programación Backend. Mencione al menos
tres razones por las que ha sucedido este evento y explique desde su punto de vista por qué.
• En las empresas de desarrollo de software se han inclinado por aplicar el desarrollo de software
mediante FULL-STACK (FrontEnd / BackEnd). Explique las capas que componen el desarrollo
mediante este método y como afecta cada una de ellas al producto terminado.
• Mencione por qué FastApi es una solución adecuada para el desarrollo de Microservicios.
• Defina cual es el ROL que ha tenido el uso del formato JSON para intercambio de datos en
microservicios.
• Acorde a lo anterior, explique con sus palabras y mediante una posición profesional, cómo el uso
del lenguaje Python, el desarrollo de BackEnd y la implementación de un API son adecuadas para
el desarrollo del proyecto mencionado a continuación en el apartado de contexto.
Estas preguntas deberán ser contestadas mediante el uso de las correspondientes citas de consulta
conforme a los criterios de evaluación consignados en el aula en los apartados de LABORATORIO y
SUSTENTACIÓN. Por lo anterior se agradece consultar dichos criterios en la plataforma
correspondiente.
CONTEXTO
El curso de Infraestructura TIC, tiene por objetivo el desarrollo de un proyecto para el ensamblaje,
codificación e implementación de una solución mediada por dispositivos basados en tecnología Arduino
y software API para la adquisición de datos asociados a diversos aspectos relacionados con la
automatización y el IOT.
Por lo anterior se ha seleccionado las siguientes herramientas como medio para conseguir este objetivo.
• Desarrollo de aplicación backend mediante FASTAPI y consulta a base de datos mediante uso de
librería PSYCOPG2.
• Servidor implementado en máquina virtual con motor PostgreSQL en donde se contiene la base
de datos.
• Página web desarrollada mediante el uso de HTML y JavaScript, para el consumo de los datos
mediante el uso de consultas disponibles mediante FASTAPI.
PRÁCTICA – BASE DE DATOS Y CONFIGURACIÓN DE
SERVIDOR
A continuación, por favor observar los vídeos de los siguientes enlaces (gracias al auspicio del Semillero
de Software Libre y Desarrollo Web – WEB-IN).
A continuación, se muestra parte del modelo entidad relación con el que se trabajará el presente
laboratorio. El modelo completo se desarrolló en una actividad anterior al laboratorio en clase. Por favor
usar este modelo para realizar el presente laboratorio. El modelo resultante deberá tener un total de 6
tablas con sus correspondientes relaciones. MOSTRAR EVIDENCIA DE MODELO ENTIDAD
RELACION CONSTRUIDO.
• ¿Cuáles son las instrucciones DDL para crear las tablas y establecer sus relaciones?
• Mediante el uso de instrucciones DML insertar al menos 1 registro en la tabla dispositivo, 3 en la
tabla sensor y 3 lecturas por cada uno de los sensores registrados. En las demás tablas lo
estipulado en la actividad anterior al laboratorio.
• MOSTRAR EVIDENCIAS DE EJECUCIÓN DE LAS INSTRUCCIONES.
En el archivo recién creado usar el siguiente código que sirve tanto para realizar SELECT (consultas)
como para INSERT (agregar registros).
# coding=utf-8
#Importar librerías
import psycopg2
from psycopg2.extras import RealDictCursor
from fastapi import FastAPI
#Definición de rutas
@app.get("/")
async def root():
return {"message": "It's Working"}
@app.post("/insert/dispositivo")
async def insert_row(id: int, w: str, n: str):
sql = "INSERT INTO dispositivo (id, w, n) VALUES ("+\
str(id) + ",'" +\
w + "','"+\
n + "')"
cursor_obj.execute(sql)
cc.commit()
@app.post("/insert/sensor")
async def insert_row(id: int, referencia: str, descripcion: str, dispositivo_id):
sql = "INSERT INTO sensor (id, referencia, descripcion, dispositivo_id) VALUES (" +\
str(id) + ",'"+\
referencia + "','" +\
descripcion + "'," +\
dispositivo_id + ")"
cursor_obj.execute(sql)
cc.commit()
@app.post("/insert/lectura")
async def insert_row(id: int, fechahora: str, valor: str, sensor_id):
sql = "INSERT INTO lectura (id, fechahora, valor, sensor_id) VALUES (" + \
str(id) + ",'" +\
fechahora + "'," +\
valor + "," +\
sensor_id + ")"
cursor_obj.execute(sql)
cc.commit()
@app.get("/select")
async def read_items(table: str):
sql = "SELECT * FROM " + table + " ORDER BY id"
cursor_obj.execute(sql)
rows = cursor_obj.fetchall()
#print(rows)
return rows
Complementar para realizar las dos instrucciones DML faltantes que son DELETE (Borrar) y UPDATE
(modificar / actualizar) por cada una de las tablas indicadas en la actividad anterior al laboratorio. Es
decir, debe haber 4 rutas por cada tabla para un total de 24 rutas en total.
scripts\activate.bat
uvicorn main:app --reload --port=3000
Donde aparecerá el tester de FastAPI y allí realizar las pruebas de funcionamiento de las rutas
programadas, cada una de ellas con la función inicialmente para insertar y consultar registros acorde al
código anterior.
Se hace clic en la ruta a probar, se presiona el botón “Try Out” se insertan los valores si es necesario y
en la parte inferior de la ventana se puede observar el resultado obtenido.
En este caso se hace la prueba con la ruta /select para obtener los registros
de la tabla sensor.
Llevar a cabo este mismo procedimiento con las rutas creadas y explicadas diciendo qué se hizo y por
qué se hizo de esta forma, por el grupo de trabajo y ENVIAR LAS EVIDENCIAS
CORRESPONDIENTES de las pruebas con algún distintivo que identifique al grupo en la imagen o lo
que sea que se adjunte al documento de laboratorio. La evidencia de fe de la realización de la actividad.