8 pasos para crear una Web API con .Net Core.


Si le preguntamos a Microsoft, .Net Core es una version del framework .Net de desarrollo de aplicaciones multiplataforma disenada para crear tanto aplicaciones web, como servicios o aplicaciones de consola.

Haciendo un poco de historia, los origenes de .Net Core se encuentran en el propio framework .Net que vio la luz en el ano 2002 bajo el nombre de ASP.Net Web forms, que no era mas que una gran capa de abstraccion disenada para que el desarrollo web fuese tan sencillo, como hasta entonces era el desarrollo de aplicaciones de escritorio. En 2007 aparece ASP.Net MVC, version en la que ya no solo se incluye el patron MVC con sus ventajas de convencion sobre configuracion y separacion de intereses, sino tambien las estandarizaciones HTML y CSS, Servicios web REST y testing unitario.

En 2015 Microsoft anuncia un cambio de direccion en cuanto a ASP.Net y surge .Net Core, una version multiplataforma que ya carece de la especificidad Windows, de forma que se puede desplegar en diversos entornos incluyendo contenedores Docker y la nube, pudiendo desarrollar las aplicaciones en Linux y macOS.

Cuenta con numerosas ventajas mas: mejor rendimiento, librerias de clases portables, aplicaciones desplegadas como entidades independientes o portables, una linea de comandos de soporte avanzada, interoperabilidad con el framework .Net y ademas es un framework de codigo abierto, paso con el cual Microsoft enfoca su nueva idea de negocio.

Crear una Web API simple partiendo de cero con .Net Core no es para nada una tarea ardua, resumo aqui los pasos principales para crearla:

PASO 1. BASE DE DATOS

Necesitamos una base de datos y aunque SQL Server sea tradicionalmente la que mejor se relaciona con .Net, existen mas posibilidades como es el caso de MySql. Para crear la base de datos basta con descargarse MySql del sitio web oficial, una vez configurado se crea una instancia local.

En esta instancia, creamos un esquema sobre el que ya iremos definiendo las tablas y rellenandolas:

CREATE SCHEMA 'nombreEsquema' DEFAULT CHARACTER SET utf8;

CREATE TABLE 'nombreTabla'

INSERT INTO nombreTabla(columna1, columna2,...) VALUES (valor1, valor2, ...)

PASO 2. CREACION DEL PROYECTO.

El siguiente paso es crear el proyecto .Net Core sobre el que vamos a desarrollar nuestra Web API, para ello utilizando Visual Studio 2017 en la opcion del menu Archivo, subopcion Nuevo nos aparecera el asistente para seleccionar que tipo de aplicacion queremos.

En nuestro caso seleccionamos: Aplicacion ASP.Net Core y Web API, lo cual ya nos generara una arquitectura base enfocada de la que partir.

PASO 3. CONECTAR LA APLICACION CON LA BASE DE DATOS

Ahora toca conectar nuestra aplicacion con la base de datos, para ello una buena practica es generar una libreria de clases dentro del proyecto para continuar con el patron de separacion de intereses y en ella crear la logica de conexion. Haremos esto cada vez que queramos generar una nueva capa de abstraccion.

En este punto es necesario descargar desde NuGet los siguientes paquetes, que nos gestionaran la conexion con la base de datos:

Microsoft.EntityFrameworkCore

Pomelo.EntityFrameworkCore.MySql.

Una vez descargados e instalados en nuestra libreria de clases con la siguiente orden, sustituyendo los valores en azul por nuestros propios datos, ya se crea la conexion y automaticamente se generan los modelos de datos:

Scaffold-DbContext "Server= localhost; UserId= root; Password= MyPassword; Database=OurSchema" Pomelo.EntityFrameworkCore.MySql-OutputDir Models

Una buena practica consiste en crear un archivo appsettings.json en el que almacenar la cadena de conexion a nuestra base de datos:

Este archivo se llamara desde el archivo Context.cs:

PASO 4. CAPA NEGOCIO

El siguiente paso seria crear una nueva capa de abstraccion, la capa de negocio en la cual anadimos los repositorios, tanto interfaz como implementacion. En estas clases es donde se realizaran las consultas o acciones que queramos realizar a la base de datos.

Un ejemplo de interfaz de repositorio simple es la siguiente:

Cuya implementacion seria:

PASO 5. CAPA DTOs

La siguiente capa que yo recomiendo crear es la de DTOs, que puede que no sea necesaria, pero es aconsejable cuando se va a trabajar con los datos de forma que aparezcan nuevas propiedades en los modelos autocalculadas o de logica de negocio.

Un ejemplo de un DTO simple es el siguiente:

PASO 6. CAPA MANAGERS.

La capa de Managers, es la abstraccion en la cual agrupamos diferentes clases en las que se van a realizar calculos o implementar los diferentes algoritmos que definamos para nuestra aplicacion. Es recomendable tambien tener tanto las interfaces como las implementaciones.

Un ejemplo de interfaz:

Y de implementacion:

PASO 7. CAPA CONTROLADORES.

La ultima capa es la capa con los controladores, en ellos se definiran las diferentes rutas con las que se podra acceder a nuestra WebApi y es realmente una capa de conexion entre las aplicaciones que consumen nuestra informacion y nuestros desarrollos backend. En esta capa se necesita importar desde NuGet los paquetes:

Microsoft.AspNetCore.All

System.Net.Http.

Un ejemplo muy sencillo de un controlador es el siguiente:

Realmente el encabezado [HttpGet] no haria falta porque al comenzar el nombre de los metodos por Get, el framework ya sabe interpretarlo.

PASO 8. TESTING UNITARIO.

Por ultimo, es muy importante desarrollar nuestra aplicaciones, por sencillas que las consideremos, apoyadas por proyectos de test que verifiquen el buen funcionamiento de las mismas. Para la realizacion de test unitarios en .Net Core existen numerosas librerias, yo en concreto utilice NUnit y para ello desde NuGet descargue los siguientes paquetes:

Microsoft.NET.Test.SDK

Moq

NUnit

NUnit3TestAdapter

La creacion de test unitarios es muy sencilla y se puede seguir con facilidad la propia documentacion de Microsoft.

Con estos sencillos pasos ya tenemos creada nuestra Web API con .Net Core, como se puede comprobar sencillo y muy documentado tanto en la web oficial de Microsoft como en multiples recursos: tutoriales, libros y posts.

Espero que esta publicacion te haya sido util. Si es asi, por favor, dale un voto positivo y compartelo en tus redes sociales. Si lo deseas, puedes encontrarme en Twitter y en Linkedin

Comentarios

Entradas populares de este blog

bybit-api

Unnofficial Python wrapper for the unite-db.com REST API.