Haciendo una API Rest en 1 hora con ASP.NET Web Api - III

Haciendo una API Rest en 1 hora con ASP.NET Web Api - III
Sin comentarios Facebook Twitter Flipboard E-mail

En el capítulo anterior configuré el ORM estándar de .NET, Entity Framework 5, y realicé el mapeado de la tabla de datos que construí en el primero.

Este capítulo trataré sobre la construcción en sí de la API Rest con Web API, mostrando como en unos pocos click y selecciones la tendré funcionando y lista para ser probada con Fiddle.

Un CRUD REST casi automáticamente

Teniendo abierto el proyecto de Web API en Visual Studio, pulso con el botón derecho sobre la carpeta de “Controllers” para obtener el menú contéxtual. Aquí selecciono “Add” o “Añadir” (depende del idioma de tu instalación) y vuelvo a escoger “New Scaffolded Item…”.

Web API

En la ventana que se abre selecciono la plantilla de Web API 2 Controller con acciones, utilizando Entity Framework.

Web API

Lo cual me lleva a otra pequeña ventana en donde le cambio el nombre al Controller a PersonasController.

La importancia de escoger bien el nombre es que con esta denominación se construirá el servicio REST y así, en este ejemplo, las llamadas se realizarán a /api/Personas. Teniendo muy en cuenta que es sensible a las mayúsculas, y el no utilizar símbolos como las ñ o los acentos.

Como verás, tengo a continuación un aviso de que estoy utilizando EF 5, por lo cual no voy a poder obtener una API que funcione de forma asíncrona con este ayudante. Lo cual es una pena, pero que veremos en otro capítulo más de este tutorial.

Lo siguiente que debo hacer es seleccionar cual es la entidad que vamos a utilizar en el controlador para transmitir/recibir la información.

Y lo último es elegir el contexto de datos que voy a utilizar. Es decir el conjunto de entidades, operaciones y mapeado en Entity Framework que me permitirán manipular la base de datos. Y que en este tutorial (si has seguido los nombres que he ido poniendo) debe ser la que se lee en la siguiente imagen.

Web API

Y ya está. Se ha generado automáticamente los siguientes métodos, plenamente accesibles por medio de una API REST, que conforman un CRUD de objetos del tipo Personas contra la base de datos SQL. * GetPersonas. Devuelve un listado de todas las personas almacenadas en la base de datos. * GetPersona(int id). Devuelve una persona identificada por su Id. * PutPersona(int id, Persona persona) Modifica una persona identificada por su Id. * PostPersona(Persona persona) Inserta una nueva persona. * DeletePersona(int id) Borra una persona identificada por su Id.

Web API

Probando la funcionalidad real de la API

Todo este tutorial podría llegar a ser de cierta utilidad tal cual, pero creo que puedo aportar un calor añadido describiendo cómo he realizado las pruebas – manuales, eso sí – de la API, y confirmar que hace lo que parece que hace. Así que lo primero es descargar he instalar una herramienta excelente para este tipo de operaciones: Fiddler.

Al abrirlo veo una pantalla vacía, en donde la sección de la derecha voy a escoger la pestaña “Composer”. Aquí introduciré un poco más adelante las peticiones que le voy a hacer a la API.

Fiddler

Me vuelvo al Visual Studio y arranco el “Debug”. Ya sea con la tecla F5 o con el botón de Play. Sabré que tengo la sesión arrancada, primero porque se me va a abrir un navegador que muestra una web tipo de asp.net que se publica con el servidor web de desarrollo (por eso el puerto de localhost).

Fiddler

Segundo, por la barra naranja que se ve en el pie del Visual Studio, y que indica el modo en el que está funcionando el IDE.

Visual Studio

Ahora vuelvo a Fiddler e introduzco la dirección del IIS de desarrollo (la que se ve en la imagen es la mia, la tuya posiblemente utilice otro puerto). Y le añado /api/Personas. Cuidado con no poner la / al final.

Para no recibir toda la información de todos los procesos abiertos y que se comuniquen con Internet, primero pongo la pantalla de Fiddler lado a lado con el navegador en donde tengo corriendo la API.

Entonces en Fiddle selecciono el icono de la mira, y arrastro el picker encima de la ventana del navegador. Y con esto Fiddler escuchará y mostrará solamente el tráfico en esta sesión del navegador.

Fiddler

El siguiente paso es volver a poner Fiddler en pantalla completa, y pulsar la tecla F12, para iniciar la escucha. Y pulso en el botón de “Execute” al lado derecho de la url.

Fiddler

La respuesta no se hace esperar, y obtengo un resultado 200 que significa que todo ha ido bien. Ahora, para ver la respuesta solo debo hacer un doble click y Fiddler me ofrece el contenido de la misma.

Tal y como esperaba, he obtenido una lista de todas las personas almacenadas en la base de datos.

Fiddler

Y si introduzco ahora un número en la url...

Fiddler

... me devuelve la persona a la que pertenece es Id.

Fiddler

Ahora voy a hacer algo un poquito más complejo. Voy a actualizar los datos de una persona.

Para ello lo primero que hago es seleccionar el ver la respuesta de la petición anterior en formato “Raw”. Y me copio el objeto persona en formato Json.

Fiddler

¿Por qué? Porque ASP.NET Web API tiene una curiosa forma de recibir los parámetros. Si es un objeto primitivo como una cadena de texto, un entero, un boleano, o similares, dichos objetos se mandan por querystring. Pero los objetos complejos siempre se mandan en el cuerpo del mensaje (en realidad se puede cambiar todo esto, pero está fuera del alcance de este tutorial).

Ahora cambio el tipo de mensaje http de GET a PUT he introduzco en el cuerpo del mensaje el objeto persona que he copiado anteriormente. Tal y como se ve en la imagen a continuación.

Fiddler

Ups, al lanzar la ejecución, el API me devuelve un error “415 Unsupported Media Type” que lo que viene a decir es que no sabe cómo tratar la información que introducido en el cuerpo. Pero esto se arregla fácil añadiendo en la cabecera del mensaje el tipo de contenido: Content-type: application/json

Fiddler

Y ahora sí, el API ha realizado la modificación y me devuelve el objeto modificado.

Fiddler

El resto de las pruebas, te las dejo a ti. Pero puedo asegurarte que todos los métodos son plenamente funcionales.

Espero que este tutorial haya sido de utilidad y que la sencillez de construcción de esta API REST motive a los lectores en adentrarse en el apasionante mundo del backend.

Más información | ASP.NET Web API En GenbetaDev | Haciendo una API Rest en 1 hora con ASP.NET Web Api - I, Haciendo una API Rest en 1 hora con ASP.NET Web Api - II, Haciendo una API Rest en 1 hora con ASP.NET Web Api - IV

Comentarios cerrados
Inicio