Primeros pasos con asp.net-web-api2

¿Qué y por qué Asp.Net Web API2?

Qué y por qué ?

Web API2 de Asp.Net es la última versión de Web API. Es una manera fácil de implementar un servicio web RESTful utilizando todas las bondades que proporciona el marco Asp.Net. Una vez que comprenda los principios básicos de REST, será muy fácil implementar Asp.net Web API2. Web API2 se basa en el modelo de canalización conectable y modular de Asp.Net. Esto significa que cuando un servidor que aloja una API2 web recibe una solicitud, primero pasa a través de la canalización de solicitudes de Asp.Nets. Esto le permite agregar fácilmente sus propios módulos si encuentra que las capacidades predeterminadas no son suficientes para sus necesidades. Con los anuncios recientes sobre ASP.net vNext, esto también significa que potencialmente puede alojar su Web API2 fuera de Windows Server, lo que abre una amplia gama de casos de uso. Ver aquí para más detalles.

¿Cómo funciona?

Web API2 utiliza los conceptos de controlador y acción de MVC. Los recursos se asignan directamente a los controladores; normalmente tendría un controlador diferente para cada una de sus principales entidades de datos (Producto, Persona, Pedido, etc.). Web API2 utiliza el motor de enrutamiento Asp.Net para asignar direcciones URL a controladores. Por lo general, las API se mantienen dentro de una ruta /api/ que ayuda a distinguir los controladores API de otros que no son API en el mismo sitio web.

Las acciones se utilizan para asignar verbos HTTP específicos, por ejemplo, normalmente tendría una acción GET que devuelve todas las entidades. Esta acción respondería a /api/Products (donde ‘productos’ es su controlador) y se vería así:

 public IEnumerable<string> Get()
 {
     return new string[] { "value1", "value2" };
 }

También puede tener una acción ‘GET’ que acepta una ‘ID’ específica y devuelve una entidad específica. Respondería a /api/Products/81 y se vería así:

public string Get(int id)
 {
    return "value";
 }

Hay muchos grandes beneficios ocultos en el uso de Web API que quizás no se dé cuenta, pero que en realidad le ahorran mucho trabajo.

Web API2 es parte de ‘One Asp.Net’

Web API2 es parte de la familia ‘One Asp.Net’, lo que significa que admite de forma nativa todas las excelentes funciones compartidas que puede usar actualmente con MVC o formularios web, esto incluye (estos son solo algunos ejemplos):

  • Marco de la entidad
  • Autorización e identidad
  • Andamios
  • Enrutamiento

Serialización y vinculación de modelos

Web API2 está configurado de forma predeterminada para proporcionar respuestas en XML o JSON (JSON es el valor predeterminado). Sin embargo, como desarrollador, no necesita realizar ninguna conversión o análisis: simplemente devuelve un objeto fuertemente tipado y Web API2 lo convertirá a XML o JSON y lo devolverá al cliente que llama, este es un proceso llamado negociación de contenido. Este es un ejemplo de una acción GET que devuelve un objeto Product fuertemente tipado.

 public Product GetProduct(int id)
 {
    var product = _products.FirstOrDefault(p => p.ID == id);
    if (product == null)
    {
       throw new HttpResponseException(HttpStatusCode.NotFound);
    }
    return Request.CreateResponse(HttpStatusCode.OK, product);
 }

Esto también funciona para las solicitudes entrantes que utilizan una función llamada Validación de modelo. Con Model Validation, Web API2 puede validar y analizar los datos del cuerpo de la respuesta entrante en un objeto fuertemente tipado para que pueda trabajar con él en su código. Este es un ejemplo de vinculación de modelos:

 public HttpResponseMessage Post(Product product)
 {
     if (ModelState.IsValid)
     {
         // Do something with the product (not shown).
 
         return new HttpResponseMessage(HttpStatusCode.OK);
     }
     else
     {
         return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
     }
 }

Hola API web

Web Api 2 - Ejemplo de Hola Mundo

Vamos a crear una nueva aplicación simple Web Api que nos devuelva Json con mensaje y nombre de usuario. ¡Empecemos! Primero cree un nuevo proyecto Web Api usando Visual Studio y seleccione Plantilla vacía. Asegúrese de revisar la carpeta “Web Api”:

ingrese la descripción de la imagen aquí

NOTA No elegí la plantilla “Web Api” porque agrega una referencia a ASP.NET MVC para proporcionar la página de ayuda de la API. Y en una aplicación tan básica realmente no la necesitamos.

Agregando un modelo

Un modelo es una clase de C# que representa algunos datos en nuestra aplicación. ASP.NET Web API puede serializar automáticamente el modelo a JSON, XML o algún otro formato (depende de la configuración).

En nuestra aplicación crearemos solo un modelo, pero las aplicaciones del mundo real suelen tener muchos de ellos.

En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Modelos. Luego seleccione Agregar y luego seleccione Clase. Nombra la clase “HelloMessage”. Nuestro modelo necesita dos propiedades: MessageText y UserName:

namespace WebApiHelloWorld.Models
{
    public class HelloMessage
    {
        public string MessageText { get; set; }
        public string UserName { get; set; }
    }
}

Agregar un controlador

Un controlador maneja las solicitudes HTTP. Nuestra aplicación solo necesita un controlador que devuelva Json con el mensaje Hello y el nombre de usuario (que pasaremos en la URL). En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Controladores. A continuación, seleccione Agregar y luego seleccione Controlador. En la ventana abierta, seleccione Web API Controller - Empty y haga clic en Add.

ingrese la descripción de la imagen aquí

Establezca el nombre del controlador como “HelloController”. A continuación, edite el código del controlador creado. Necesitamos agregar un método que devuelva el mensaje Hello.

using System.Web.Http;
using WebApiHelloWorld.Models;

namespace WebApiHelloWorld.Controllers
{
    public class HelloController : ApiController
    {
        public HelloMessage GetMessage(string name)
        {
            HelloMessage message = new HelloMessage
            {
                MessageText = "Hello my Dear!",
                UserName = name
            };

            return message;
        }
    }
}

NOTA Asegúrese de agregar usando WebApiHelloWorld.Models. Sin él, su controlador no encontrará la clase HelloMessage.

Finalizar

¡Eso es todo! Ahora solo necesita compilar e iniciar su aplicación. Simplemente presione Ctrl + F5 o simplemente F5 (para comenzar sin depurar). Visual Studio iniciará el navegador web. Tienes que llamar a tu controlador. Para hacer eso, agregue al final de la URL “/api/hello?name=John”. El resultado debería ser:

{
    "MessageText": "Hello my Dear!",
    "UserName": "John"
}

Instalación o configuración

Instrucciones detalladas sobre cómo configurar o instalar asp.net-web-api 2.