Cuando se lanzó la versión 4 de ASP .NET, Microsoft introdujo entre sus novedades Web API. Este, es un framework diseñado especificamente para la creación de servicios REST con HTTP. Algunos puntos a considerar son:
- Solo usa HTTP como medio de transporte. Usa un modelo de programación específico para esto, que es más accesible de distintos navegadores, dispostivos móviles, etc. permitiendo un amplio alcance.
- Permite variedad de tipos de media como XML, JSON, etc.
- Usa protocolos y formatos básicos. No existe soporte para protocolos de alto nivel como mensajería confiable o transacciones.
- Viene integrado en el .NET framework pero también está disponible como una descarga independiente.
- Reutiliza el sistema de routing ya existente en ASP .NET MVC, por lo cual la adaptación es mucho más rápida para programadores que conozcan dicho framework.
Creando una primera aplicación Web API
Creamos un nuevo proyecto en Visual Studio y seleccionamos como tipo de proyecto: ASP .NET MVC 4 Web Application (como mínimo)
En la siguiente pantalla, veremos que podemos elegir como plantilla: Web API. Para efectos de esta introducción, sin embargo, elegiremos la plantilla "Emtpy", que nos creará un proyecto web vacío.
Una vez creado el proyecto, veremos la siguiente estructura de carpetas
Sobre la carpeta Controllers, daremos click derecho y seleccionaremos "Add New Item...". En la pantalla que nos aparece, debemos buscar "Api Controller Class". Le pondremos un nombre a nuestro controlador y daremos click en "Add".
Enseguida, obtendremos la siguiente clase:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebAPI_FirstApp.Controllers
{
public class ValoresController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
// POST api/<controller>
public void Post(string value)
{
}
// PUT api/<controller>/5
public void Put(int id, string value)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
}
}
}
Algunas cosas importantes a resaltar:
- Por convención de nombres, la clase debe terminar su nombre en "Controller". En este caso, el recurso que manipularemos se llama "Valores" y por ello la clase deberá llamarse "ValoresController".
- La clase hereda de ApiController. Esto marca la diferencia con un controlador normal de MVC e indica que esta clase solo devolverá data serializada y no otros tipos de objetos como podría pasar en un controlador de MVC (que puede devolver objetos o vistas).
- El enrutamiento por defecto de WebAPI hará que, al publicar la aplicación, esta se localize dentro de url:
http://<sitio web>/api/<nombre del controlador>/
Esto se hace para evitar confusiones con controladores de MVC. Es decir, podemos tener en un mismo sitio web un controlador llamado EmpleadosController, por la que accedamos a los perfiles de los empleados en la ruta:
http://<sitio web>/Empleados/
Y en la misma página Web, tener la ruta:
http://<sitio web>/api/Empleados/
La cual actuaría como un servicio web REST y unicamente nos devolvería representaciones de los empleados en XML o JSON. Aún así, si solo vamos a publicar nuestros controladores Web API, de forma independiente a alguna página web, podemos modificar este enrutamiendo en la clase RouteConfig, dentro de la carpeta App_Start. - Las funciones creadas por la plantilla utilizan convención de nombres para reconocer qué método HTTP será usado para invocar cada una de ellas (GET, POST, PUT, DELETE). No haciendo falta añadir atributos a los métodos indicar esto. Sin embargo, también podemos añadirlos si existiera ambiguedad entre métodos o necesitaramos crear nuevas operaciones adicionales.
Probando nuestro Web API desde un navegador
Entraremos a las propiedades del proyecto y, en el tab Web, indicaremos un puerto específico para nuestra aplicación.
Presionaremos F5 para iniciar la aplicación en modo Debug, o Ctrl + F5 para iniciar la aplicación sin depurar. Y en un navegador ingresaremos la siguiente dirección (52750 es el número del puerto que hemos asignado, Valores es el nombre del recurso que se corresponde con el controlador):
http://localhost:52750/api/Valores
Este es el resultado que obtenemos:
Entraremos a las propiedades del proyecto y, en el tab Web, indicaremos un puerto específico para nuestra aplicación.
Presionaremos F5 para iniciar la aplicación en modo Debug, o Ctrl + F5 para iniciar la aplicación sin depurar. Y en un navegador ingresaremos la siguiente dirección (52750 es el número del puerto que hemos asignado, Valores es el nombre del recurso que se corresponde con el controlador):
http://localhost:52750/api/Valores
Este es el resultado que obtenemos:
Como vemos, es una representación XML de un array de strings, que se ha obtenido mediante la operación HTTP GET. Si deseamos utilizar notación JSON de manera global, podemos hacerlo mediante un simple cambio en el método Application_Start de la clase Global.asax del proyecto. Añadiremos lo siguiente:
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter());
Tras lo cual, el resultado obtenido al hacer la misma consulta es el siguiente:
Interesante y simplemente explicados!. saludos
ReplyDeleteInteresante y simplemente explicados!. saludos
ReplyDelete