Upload
danae-aguilar-guzman
View
71
Download
4
Embed Size (px)
Citation preview
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);