ASP.NET MVC - introduccion al web api

15
Introducción al Web API Danae Aguilar Guzmán MCT, MS, MCTS, MCP [email protected]

Transcript of ASP.NET MVC - introduccion al web api

Page 1: ASP.NET MVC - introduccion al web api

Introducción al Web API

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

[email protected]

Page 2: ASP.NET MVC - introduccion al web api

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

Page 3: ASP.NET MVC - introduccion al web api

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)

Page 4: ASP.NET MVC - introduccion al web api

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:

Page 5: ASP.NET MVC - introduccion al web api

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 }

);

Page 6: ASP.NET MVC - introduccion al web api

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();

Page 7: ASP.NET MVC - introduccion al web api

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"; } }

Page 8: ASP.NET MVC - introduccion al web api

Web API

Crear un proyecto Web MVC Web API

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

Page 9: ASP.NET MVC - introduccion al web api

Web API

Crear un proyecto Web MVC Web API

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

Page 10: ASP.NET MVC - introduccion al web api

Web API

En el global.asax tendremos:

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

GlobalConfiguration.Configuration);

Page 11: ASP.NET MVC - introduccion al web api

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} );

Page 12: ASP.NET MVC - introduccion al web api

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; }

Page 13: ASP.NET MVC - introduccion al web api

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();

Page 14: ASP.NET MVC - introduccion al web api

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; }

Page 15: ASP.NET MVC - introduccion al web api

Web API

Retornando errores:

throw new HttpResponseException

(HttpStatusCode.NotFound);