Desde hace tiempo quería escribir este post para mostrar como iniciar con ASPNET Web API y OWIN desde 0, así que al fin he tenido el tiempo de hacerlo, espero que les guste.


Desde hace unos años, tenemos un cambio interesante en la arquitectura de ASPNET basada en OWIN (Open Web Interface for .Net), en este post no voy a explicar OWIN, ya muchos otros lo han hecho, así que si no sabes de que va el tema te recomiendo el post de @jmaguilar: OWIN (I): Introducción

Inicemos, lo primero es crear un nuevo proyecto de tipo Web Application, usando en este caso el template Empty en la sección de ASPNET 4.6:

ASPNET 4.6 Empty Template

Una vez se cree el template, lo primero es añadir los dos siguientes paquetes Nuget al proyecto:


Install-Package Microsoft.Owin
Install-Package Microsoft.AspNet.WebAPI.Owin
Install-Package Microsoft.Owin.Host.SystemWeb

El siguiente paso es agregar la clase de inicio de OWIN, así que en la raiz del sitio agregar un nuevo item de tipo OWIN Startup class:


OWIN Startup Class

Una vez añadida la clase, registramos el middleware de ASPNET Web API al pipeline de OWIN, esto se hace en el método Configuration, en este caso le decimos a Web API que vamos a usar Routing por Atributos:


using Microsoft.Owin;
using Owin;
using System.Web.Http;

[assembly: OwinStartup(typeof(WebAPIAndOwin.Startup))]

namespace WebAPIAndOwin
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();
            config.MapHttpAttributeRoutes();
            app.UseWebApi(config);
        }
    }
}

Ahora, para validar que todo quede bien, creamos la típica carpeta Controllers, y allí un nuevo controlador de Web API, en el ejemplo lo llamaremos ValuesController y sólo va a tener 1 método:


public class ValuesController : ApiController
{        
    [Route("api/values/test")]
    [HttpGet]
    public string Get()
    {
        return "Web API and OWIN !!";
    }
}

Y eso es todo, para validar simplemente realiza una petición a http://localhost:<puerto>/api/values/test

Luego iremos viendo más acerca de WebAPI y OWIN.

Espero el post les sea interesante, saludos.