jueves, 14 de septiembre de 2023

API REST en Visual Studio 2022

 Aún para personas profesionales en las Tecnologías de la Información puede confundir y quizás hasta desconocer el término de API REST. Con un profundo respeto les comparto un video que a mi me sirvió mucho de referencia e introducción a este tema a pesar del nombre del video. 


 En las aulas utilizamos PHP con MariaDB, inclusive en mi canal hay algunos vídeos al respecto, Sin embargo ahora vamos a trabajar con la tecnología .NET y para ello nos encontramos un artículo en el siguiente blog.

Es interesante porque esta escrito en el pasado mes de mayo de este año con lo que ya se aborda la versión 2022 de Visual Studio.

Para darle un sabor diferente vamos a cambiar de ejemplo y podemos trabajar con una pequeña base de datos que contiene los datos generales de mis compañeros de trabajo. Entonces la base de datos estaría compuesta por:

idemp
nombre
apellido1
apellido2
diac
mesc


De una tabla de SQLite donde tenemos 3 columnas de cadena y 3 numéricos. Iniciaremos creando un tipo de proyecto llamado ASP.NET Core Web API.


Emulando el blog del autor le pondremos MyCoworkers. En el ejemplo es una base de datos más compleja sin embargo para fines de aplicar el conocimiento este caso solo es una tabla.
Al igual el tutorial habla de que no se usarán el "Controlador basado en APIs" sino "Puntos de conexión" (endpoints).

El siguiente dialogo es para dar información adicional sobre el proyecto de APIs que si comparamos con el tutorial las últimas cajas de verificación (checkboxes) cambian con la versión que estamos usando.
Una vez creado el proyecto vamos a crear clases de tipo POCO  (Plain Old CLR/Class Objects) o las clases del modelo que según el sitio de MongoDB las clases POCO son "Objetos de clase simples que no heredan características de algunas clases base o interfaces de un framework específico" que me recuerda las clases "POJO" cuando nuestro compañero Alejandro Jiménez  nos enseñaba como desarrollar aplicaciones Web basadas en Java.


Como solo tenemos una clase vamos a hacer algo que alguno de mis alumnos le llamó magia (aquella vez que nos adentramos en Ruby on Rails) el llamado Scaffolding (andamiaje) "Scaffolding es una herramienta que permite crear rápidamente una interfaz web interactuando con su modelo de datos. La interfaz lista los datos existentes en una tabla, proporcionando una manera fácil de agregar nuevos registros, así como manipular o eliminar los existentes"  (Goodrich & Patrick, 2016). En otras palabras nos ayuda a generar código de las operaciones del CRUD (Crear, Leer, Actualizar y Borrar).

Vamos al proyecto y con botón derecho elegimos Agregar-Nuevo elemento con Scaffolding


Ahora se muestra un nueva ventana de dialogo con las opciones de Scaffolding disponibles elegimos "API con puntos de conexión de lectura y escritura mediante Entity Framework".


En el siguiente dialogo elegimos la clase que queremos aplicarle el Scaffolding (Coworker) y para la clase del punto de conexión y la clase del DbContext se da clic en el botón "+" que está a un lado del combo y se elige (en esta ocasión) el nombre sugerido, también par salirnos un poquito de Microsoft usaremos SQLite.


 Inicia el proceso de Scaffolding...


Sin embargo marcó lo siguiente:

Se realizaron 2 cosas para corregir problemas, una fue actualizar la versión del Visual Studio .NET 2022 a su versión más reciente en este caso la 17.7.4 además que cambié la clase aunque la verdad no se cual fue la solución que quitó el error.
Me parece que es el nombre de la columna la llamada Id que antes tenía IdEmp, lo otros cambios fue que agregué el signo ? a todos las columnas a excepción de la llave primaria.

Revisamos como lo dice el blog, los archivos modificados y generados y efectivamente realizó los cambios sin más. Siendo sincero esperaba insert's, select's, delete's y update's pero veo que se ocultan dichas operaciones.
Ahora tenemos que modificar una clase que tiene que ver con la base de datos y se encuentra en la carpeta de Data.

Y ahora tenemos que programar esta clase para "poblar" en este caso la tabla que vamos a trabajar.



En los recuadros amarillos mostramos el código que se agregó. Ahora si vamos a hacer los pasos para ello en el blog de Sayed menciona que se tienen que hacer dos pasos:

1. Agregar una migración EF (Entity Framework)
2. Actualizar la base de datos.

Por lo que primero, vamos a accesar a la pestaña que dice "Connected Services"



En los puntitos a un lado de la opción de SQLite, al dar clic ahí aparece un menú donde elegiremos "Agregar migración".


Aquí empieza a recuperar los contextos disponibles y en nuestro caso elegimos el único disponible.


Una vez seleccionado en el contexto le damos clic en el botón "Finalizar".

Al darle clic ahora al botón "Finalizar" inicia la migración.


 Al terminar manda los siguientes mensajes:


Como vemos previo a este proceso, el menú que acceso a este, vemos que hay una opción de "Actualizar la base de datos", la cual vamos a elegir. Nuevamente busca el contexto, para mostrarlo y realizar la ejecución.


Damos clic en el botón "Finalizar" para hacer el proceso.

Y bien pareciera que ya ternemos lista la base de datos, como han visto de programación o escribir código ha sido muy poco.

Sayed ahora nos señala una nueva ventana llamada "Explorador de puntos de Conexión", en el blog se maneja una manera de configurar VS2022, sin embargo en esta actualización se encuentra en el menú Ver-Otras Ventanas, y podemos ver estos puntos de conexión.



En definitiva estas características están desarrollándose y se menciona que las mismas seguirán en desarrollo agregándose o modificando en las versiones posteriores. Ahora vamos a ver las siguientes características de estas API's.

Con esto se inicia la creación de archivos con extensión http y se muestra el código generado.

Lo anterior es una invocación GET donde se traen todos los registros de la tabla, ahora haremos código para mandar información a la tabla y esto se hace con un POST, y que agregaremos el código propuesto en el blog. Hacemos la solicitud. Hubo muchos problemas en la generación quiero creer que se complicó por las directivas de seguridad, por lo que se cambió de https a http, y una vez que se desplegó la página, ahora si se envía la solicitud.





Al dar clic en "Enviar" se abre el navegador..


Y mientras tanto en el ambiente de .NET podemos hacer la solicitud (enviar).




En la consola podemos observar el código SQL que yo extrañaba.


Ahora probaremos el POST donde enviaremos los datos de mi compañero Humberto, ya que los de Paco ya se guardaron.






Vemos como el Id se incrementa y crea automáticamente, en la consola podemos observar el insert.

 

Podemos constatar la inserción nuevamente haciendo un GET.





Por último y dejaré para otro post las conclusiones de Sayed, cuando hicimos el ejercicio en PHP usamos la utilería Postman, parece que .NET usa la propia llamada Swagger, por lo que en la url agregó el nombre de swagger y lo ejecuta, aquí muestro con el resultado de un GET.




Y bueno, todo muy bonito, pero ahora lo interesante es que estos servicios sean consumidos por una aplicación real, aquí una probadita de la tecnología .NET, hasta el próximo.

Miguel Araujo.

 Webgrafía

Tomado de: "Web API development in Visual Studio 2022" de Sayed Ibrahim Hashimi en:








No hay comentarios:

Publicar un comentario

Python y el algebra lineal (2)

 Suma y resta de vectores y multiplicación de un escalar por un  vector Para la suma y resta de vectores los arreglos y/o vectores deben ser...