1. Introducción al Web API
Danae Aguilar Guzmán
MCT, MS, MCTS, MCP
danaeaguilar@gmail.com
2. 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 desde
cualquier cliente
Nos permite crear aplicaciones RESTful para
llegar a un variado grupo de clientes
3. Web API
Requiere .NET Framework 4 para arriba
Los verbos se mapean con los métodos
El Web API nos permite alojar los servicios
fuera de IIS. (Self Hosting)
4. Web API
Self Hosting en una aplicación de consola.
1. Crear una aplicacion de Consola (iniciar
Visual 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:
5. 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 }
);
6. 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();
7. 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";
}
}
8. Web API
Crear un proyecto Web MVC Web API
1. Crer un Proyecto ASP.NET MVC y seleccionar
Web API
9. Web API
Crear un proyecto Web MVC Web API
2. Agregar Controllers seleccionando alguna
opcion que cree el controller para el API:
10. Web API
En el global.asax tendremos:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(
GlobalConfiguration.Configuration);
11. 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}
);
12. 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;
}
13. 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();
14. 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;
}
15. Web API
Retornando errores:
throw new HttpResponseException
(HttpStatusCode.NotFound);