ASP.NET MVC - introduccion al web api

Post on 15-Apr-2017

71 views 4 download

Transcript of ASP.NET MVC - introduccion al web api

Introducción al Web API

Danae Aguilar Guzmán MCT, MS, MCTS, MCP

danaeaguilar@gmail.com

Web API

Web API

Es un framework para construir APIs web basados en .NET

Nos permite exponer servicios y datos a travez de HTTP para consumirlos desdecualquier cliente

Nos permite crear aplicaciones RESTful parallegar a un variado grupo de clientes

Web API

Requiere .NET Framework 4 para arriba

Los verbos se mapean con los métodos

El Web API nos permite alojar los serviciosfuera de IIS. (Self Hosting)

Web API

Self Hosting en una aplicación de consola.

1. Crear una aplicacion de Consola (iniciarVisual Studio como Administrador)

2. Agregar las referencias:

1. Agregar el Assembly de System.Web

2. Desde Nuget, agregar Web API.

3. Desde Nuget, agregar Web API Self Host:

Web API

3. Definir el URI en el que escuchará el servicio.

4. Configurar el server:

static readonly Uri uri = new Uri("http://localhost:50231/");

HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(uri); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }

);

Web API

5. Crear una instancia del server y escuchar peticiones.

var server = new HttpSelfHostServer(config); // Escuchar peticiones server.OpenAsync().Wait(); Console.WriteLine("Escuchando en " + uri + " Presione Enter para salir..."); Console.ReadLine(); server.CloseAsync().Wait();

Web API

6. Crear una clase Controller que herede de ApiController y agregar los métodos equivalentes a HTTP (Get, Post, Etc.).

7. Ejecutar e invocar al servicio:

http://localhost:50231/api/Saludos

public class SaludosController : ApiController { public string Get() { return "Hola"; } }

Web API

Crear un proyecto Web MVC Web API

1. Crer un Proyecto ASP.NET MVC y seleccionarWeb API

Web API

Crear un proyecto Web MVC Web API

2. Agregar Controllers seleccionando algunaopcion que cree el controller para el API:

Web API

En el global.asax tendremos:

protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(

GlobalConfiguration.Configuration);

Web API

En WebApiConfig esta la definición de enrutado del servicio:

public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional} );

Web API

Los contoladores heredan de ApiController y los métodos representan los verbos HTTP:

public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return cadenas; }

Web API

Para que el formato de datos JSON este en Camel Case. Argegamos lo siguiente al método Register del WebApiConfig:

var jsonFormatter = config.Formatters .OfType<JsonMediaTypeFormatter>() .FirstOrDefault(); jsonFormatter.SerializerSettings.ContractResolver =

new CamelCasePropertyNamesContractResolver();

Web API

Para retornar código de estado y URL de un nuevo recurso:

public HttpResponseMessage Post([FromBody]string value) { cadenas.Add(value); var response = Request.CreateResponse<string> (HttpStatusCode.Created, value); string uri = Url.Link("DefaultApi", new { id = cadenas.Count }); response.Headers.Location = new Uri(uri); return response; }

Web API

Retornando errores:

throw new HttpResponseException

(HttpStatusCode.NotFound);