Hace algún tiempo estuvimos trasteando un poco con ASP.Net, creando una API Web. Como no somos egoístas vamos a explicaros como se crea una API con esta tecnología desde cero. Para ello vamos a utilizar algunas de las herramientas que nos ofrece el entorno de desarrollo integrado Visual Studio que hacen muy sencilla esta tarea.
Hemos dividido este artículo en dos grandes bloques, fundamentales para alcanzar nuestro objetivo: creación del proyecto y creación de la base de datos.
Creación del proyecto ASP.NET Web Application
Para la creación de la aplicación tenemos que crear un nuevo proyecto de tipo “ASP.NET Web Application”. Accederemos a través del menú de la parte superior File > New > Project.
Pulsamos el botón OK y en la nueva ventana emergente seleccionamos la plantilla para el proyecto, en este caso vamos a usar “Web API”. Esta plantilla está enfocada a la creación de servicios RESTful que pueden llegar a una amplia gama de clientes, incluyendo los navegadores y aplicaciones móviles. Además, podemos ver en la imagen que el proyecto se generará con una estructura de carpetas MVC y Web API.
En ASP.NET, MVC (Modelo-Vista-Controlador o Model-View-Controller) es un patrón de arquitectura de software para el desarrollo de aplicaciones. Una aplicación basada en MVC se divide en estos tres grandes bloques:
- Modelo. Son aquellas clases que representan la información de la aplicación.
- Vista. Son plantillas que usa la aplicación para generar dinámicamente las respuestas HTML que serán interpretadas por un navegador.
- Controladores. Se tratan de clases que manejan las solicitudes provenientes del navegador, recuperan datos del modelo, y después especifican las plantillas de las vistas que devuelven una respuesta al navegador.
Ahora hay que tener algo de paciencia hasta que se crea el proyecto. Cuando termine aparecerá la estructura de carpetas que comentábamos.
Además, vamos a analizar brevemente el fichero de configuración WebApiConfig.cs. Encontraréis este fichero en la vista “Solution Explorer”, en parte derecha de la pantalla dentro de la carpeta «App_Start», como podéis ver en la siguiente imagen.
En este fichero podemos apreciar varios aspectos interesantes:
- Web API está configurado por defecto para solo usar autenticación basada en bearer token.
- Por defecto, todos los controladores comparten la misma plantilla de enrutamiento “api/{controller}/{id}”.
- A partir de la versión Web API 2, se puede hacer uso de enrutamiento a través de una serie de atributos: [RoutePrefix(«api/books»)], [Route(«»)], [Route(«{id:int}»)], etc. Es una utilidad muy interesante en aquellos casos que no sigan la ruta por defecto y así poder aplicar una ruta específica cuando sea necesario.
Crear clases del modelo de datos
Para la creación de las clases del modelo de datos tendremos que pulsar botón derecho sobre la carpeta Models y seleccionar Add > Class. Esto nos llevará a la siguiente ventana emergente, donde elegiremos Visual C# > Class e introduciremos el nombre de la clase del modelo de datos que vamos a querer crear, por ejemplo “Measure.cs”.
Una vez generada la clase, tendremos que completarla con los atributos que queremos que la formen. En la siguiente figura vemos la clase modelo “Measure.cs” ya completa.
Para crear relaciones entre tablas y por normalización de base de datos cada tabla debería tener una clave primaria que la identifique unívocamente. Por defecto, Entity Framework busca en la entidad una propiedad que lleve como nombre o que contenga en su nombre el sufijo “Id” o “ID” y al generarse la tabla en la base de datos lo hará con este campo como clave primaria. Como veis en la imagen uno de los campos sigue esta nomenclatura, measureId. Si no quisierais seguirla tendríais que usar unos simples atributos llamados Data Annotations para configurarlo, en concreto el atributo [Key].
Crear controladores para los datos usando Scaffolding
Una vez tenemos creadas todas las clases del modelo de datos tenemos que proceder a añadir los controladores para éstas, y para ello vamos a usar la característica Scaffolding de ASP.NET Web API. Ésta permite la generación automática de código el cual realiza las acciones de creación, lectura, actualización, eliminación y listado de los datos del modelo.
Para poder usar el mecanismo de Scaffolding es necesario compilar la solución previamente. Tenéis que utilizar el comando Ctrl+Shift+B.
Ahora ya sí, para añadir un controlador hay que pulsar botón derecho sobre la carpeta Controllers > Add > Controller. Nos aparecerá la siguiente ventana emergente donde seleccionaremos Web API > Web API 2 Controller with actions, using Entity Framework y pulsaremos Add.
Entonces aparecerá otra ventana en la que introduciremos el nombre de la clase del modelo de datos para la cual se va a generar el controlador, la clase del contexto de datos y el nombre del controlador que queremos crear, por ejemplo MeasuresCotroller.cs.
Tras rellenar esta información y pulsar el botón Add, se generará la clase controlador con el código para las operaciones CRUD (creación, lectura, actualización, eliminación y listado) de base de datos que afectan a los objetos de la clase del modelo de datos que hemos indicado en la creación del controlador.
Os mostramos a modo de ejemplo la clase controlador MeasuresController.cs con el código generado por defecto.
Migración de Code First para crear la base de datos a partir del modelo de datos
El siguiente paso a seguir es habilitar la función de migraciones de Code First para crear la base de datos a partir del modelo de datos ya establecido. Para obtener acceso a la base datos vamos a utilizar ADO.NET Entity Framework el cual se trata de un ORM (Object Relational Mapping) que permitirá automatizar tareas con la base de datos.
Si es la primera vez que estamos usando Entity Framework (EF), tendremos que comprobar en Tools > NuGet package manager > Manage packages NuGet for solution si EF está instalado. Si no es el caso, lo instalaremos desde esta misma ventana.
En este punto, ya podemos habilitar la función “Migraciones de Code First” ejecutando los siguientes comandos en la consola del administrador de paquetes que encontrareis en Tools > Package manager console:
- Crea la carpeta Migrations y guarda el fichero Configuration.cs, que podrá editarse para inicializar la base de datos y configurar las migraciones.
pm > enable-migrations
- Genera un archivo nuevo en la carpeta Migrations que crea la base de datos.
pm > add-migration Initial
- Ejecuta la primera migración.
pm > update-database
Tras la ejecución de estos comandos ya podremos ver como se ha creado la base de datos. Ésta es por defecto una base de datos LocalDB de SQL Server Express.
En la vista «Server Explorer» podemos ver en Data Connections > DefaultConnection > Tables las tablas que se han generado. Algunas de ellas son internas de ASP.NET y sirven, principalmente, para el acceso a la aplicación. Además podemos ver la tabla Measures que acabamos de generar a partir del modelo.
Conclusiones
Ya habéis visto, no es tan difícil crear una API desde cero utilizando ASP.NET y las herramientas que nos proporciona Vidual Studio. Solo deberemos seguir una serie de pasos en el orden correcto. Ahora ya podéis crear vuestras propias APIs utilizando está tecnología.
Os dejamos el repositorio en GitHub con todo el código por si queréis probar y los Pull Request serán bien recibidos 🙂 .