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

Si le preguntamos a Microsoft, .Net Core es una versión del framework .Net de desarrollo de aplicaciones multiplataforma diseñada para crear tanto aplicaciones web, como servicios o aplicaciones de consola.

Haciendo un poco de historia, los orígenes de .Net Core se encuentran en el propio framework .Net que vio la luz en el año 2002 bajo el nombre de ASP.Net Web forms, que no era más que una gran capa de abstracción diseñada para que el desarrollo web fuese tan sencillo, como hasta entonces era el desarrollo de aplicaciones de escritorio. En 2007 aparece ASP.Net MVC, versión en la que ya no solo se incluye el patrón MVC con sus ventajas de convención sobre configuración y separación de intereses, sino también las estandarizaciones HTML y CSS, Servicios web REST y testing unitario.

En 2015 Microsoft anuncia un cambio de dirección en cuanto a ASP.Net y surge .Net Core, una versión 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 más: mejor rendimiento, librerías de clases portables, aplicaciones desplegadas como entidades independientes o portables, una línea de comandos de soporte avanzada, interoperabilidad con el framework .Net y además es un framework de código 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 aquí 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 más 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 rellenándolas:

CREATE SCHEMA 'nombreEsquema' DEFAULT CHARACTER SET utf8;

CREATE TABLE 'nombreTabla'

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

PASO 2. CREACIÓN 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 opción del menú Archivo, subopción Nuevo nos aparecerá el asistente para seleccionar que tipo de aplicación queremos.

En nuestro caso seleccionamos: Aplicación ASP.Net Core y Web API, lo cual ya nos generará una arquitectura base enfocada de la que partir.

PASO 3. CONECTAR LA APLICACIÓN CON LA BASE DE DATOS

Ahora toca conectar nuestra aplicación con la base de datos, para ello una buena práctica es generar una librería de clases dentro del proyecto para continuar con el patrón de separación de intereses y en ella crear la lógica de conexión. Haremos esto cada vez que queramos generar una nueva capa de abstracción.

En este punto es necesario descargar desde NuGet los siguientes paquetes, que nos gestionarán la conexión con la base de datos:

Microsoft.EntityFrameworkCore

Pomelo.EntityFrameworkCore.MySql.

Una vez descargados e instalados en nuestra librería de clases con la siguiente orden, sustituyendo los valores en azul por nuestros propios datos, ya se crea la conexión y automáticamente se generan los modelos de datos:

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

Una buena práctica consiste en crear un archivo appsettings.json en el que almacenar la cadena de conexión a nuestra base de datos:

Este archivo se llamará desde el archivo Context.cs:

PASO 4. CAPA NEGOCIO

El siguiente paso sería crear una nueva capa de abstracción, la capa de negocio en la cual añadimos los repositorios, tanto interfaz como implementación. En estas clases es donde se realizarán las consultas o acciones que queramos realizar a la base de datos.

Un ejemplo de interfaz de repositorio simple es la siguiente:

Cuya implementación sería:

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 lógica de negocio.

Un ejemplo de un DTO simple es el siguiente:

PASO 6. CAPA MANAGERS.

La capa de Managers, es la abstracción en la cual agrupamos diferentes clases en las que se van a realizar cálculos o implementar los diferentes algoritmos que definamos para nuestra aplicación. Es recomendable también tener tanto las interfaces como las implementaciones.

Un ejemplo de interfaz:

Y de implementación:

PASO 7. CAPA CONTROLADORES.

La última capa es la capa con los controladores, en ellos se definirán las diferentes rutas con las que se podrá acceder a nuestra WebApi y es realmente una capa de conexión entre las aplicaciones que consumen nuestra información 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 haría falta porque al comenzar el nombre de los métodos por Get, el framework ya sabe interpretarlo.

PASO 8. TESTING UNITARIO.

Por último, 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 realización de test unitarios en .Net Core existen numerosas librerías, yo en concreto utilicé NUnit y para ello desde NuGet descargué los siguientes paquetes:

Microsoft.NET.Test.SDK

Moq

NUnit

NUnit3TestAdapter

La creación de test unitarios es muy sencilla y se puede seguir con facilidad la propia documentación 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 múltiples recursos: tutoriales, libros y posts.

Espero que esta publicación te haya sido útil. Si es así, por favor, dale un voto positivo y compártelo en tus redes sociales. Si lo deseas, puedes encontrarme en Twitter y en Linkedin

Software Developer at Sngular. PhD on Immunology, always learning and trying to share knowledge. Microsoft Most Value Professional on Developer Technologies.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store