Programando con Rupert

Cuando la programación es una forma vida...

Tag: Servicios Web

Consumir Servicios Web REST con JQuery

Este artículo lo escribo como segunda parte del artículo Crear un Servicio Web REST con ASP .NET. Aquí veremos cómo consumir Servicios Web REST desde JQuery. Podéis ver algunos tutoriales de JQuery en este mismo blog.

En el artículo anterior creamos un servicio que desplegaba dos funcionalidades para recuperar información de Clientes según la URL sobre la que se realice la petición:

http://localhost:50316/api/clientes/ – Listará todos los clientes

http://localhost:50316/api/clientes/44444444K – Devolverá la información del cliente con el D.N.I.  44444444K

En este tutorial crearemos una página que recupere mediante JQuery esta información.

Preparación del Ejemplo

Partimos de una página (en mi caso ListadoClientes.aspx) con la siguiente estructura:

La idea es que al cargar la página, se deben rellenar las filas de la tabla tablaClientes, con un DNI y un enlace “Ver Detalle“, que llamará a una función Javascript. Dicha función enviará al servidor el DNI seleccionado y recuperará su información.

GetJSON()

Para lo que queremos conseguir, utilizaremos la función $.getJSON(), que toma como parámetros la url, como dato opcional los parámetros que se envían, y por último una función callback para recuperar la respuesta del servidor. De tal manera que el código Javascript sería el siguiente:

Con este ejemplo simple ya hemos visto cómo recuperar datos desde un servicio REST.

¡Hasta la próxima!
Rupert.

Crear un Servicio Web REST con ASP .NET Web Forms

Tras una serie de cambios en mi vida personal y laboral, que me han mantenido ocupado, vuelvo a tomar las riendas de este blog. En este artículo veremos cómo podemos desplegar servicios web REST dentro de una aplicación basada en ASP .NET.

En uno de los artículos anteriores escribí acerca de las características de los Servicios Web SOAP y los Servicios Web REST. En las aplicaciones de ASP .NET es relativamente fácil crear un Servicio Web SOAP, ya que bastaría con añadir un elemento de tipo “.asmx” y especificarle los Métodos Web que va a tener. Como expliqué en el artículo que he mencionado, la URL que se va a desplegar es el propio fichero .asmx y éste ya contiene tódos los métodos web asignados.

Cuando creamos un Servicio Web REST, sin embargo, se establece una URL base y somos nosotros los encargados de decidir el formato de URL que vamos a aceptar. Dependiendo de si el formato de la URL es uno u otro, ejecutaremos una funcionalidad u otra. Las llamadas esta vez se hacen sobre un método en particular.

En este ejemplo, crearemos un Servicio Web REST que devuelva la información de un Cliente a través de su DNI o bien que devuelva un listado con todos los Clientes.

Formatos de URL

Nuestro Servicio Web REST tendrá la siguiente URL base:

http://localhost:50316/api/clientes

A partir de aquí, dependiendo del formato de la URL a la que llamen, podremos ejecutar 2 funcionalidades:

http://localhost:50316/api/clientes/ – Listará todos los clientes
http://localhost:50316/api/clientes/44444444K – Devolverá la información del cliente con el D.N.I.  44444444K

Preparación del Ejemplo

He creado una aplicación web basada en Web Forms y he añadido una página ListadoClientes.aspx. Esta página de momento sólo tendrá la estructura inicial que luego rellenaremos consumiendo los servicios.

Al cargar la página, llamaremos al servicio REST para que nos devuelva todos los clientes y rellenaremos la tabla tablaClientes. Incluyendo en la columna acción un enlace que permita imprimir en el div detalleCliente los datos completos del cliente seleccionado.

Crear el mapeo de ruta

En el resto de elementos de ASP .NET Web Forms, muchos de los elementos que creamos son accesibles directamente (.aspx, .asmx…). Sin embargo, cuando hablamos de un Servicio REST, podemos especificar el formato de la URL que nos interese. Así que necesitamos decirle a ASP .NET que si detecta una URL específica y con unos parámetros específicos.

Para ello, abrimos el archivo Global.asax (si no existe lo creamos) y escribimos los siguiente en el método Application_Start (independientemente de lo que ya tenga escrito):

Con esto le estamos diciendo que si la URL empieza por api (en vez de “api” podéis poner la palabra clave que queráis) no se trata de un recurso normal, si no que lo tiene que mapear. Depués va el nombre del controlador y por último, puede tener o no un parámetro dni.

Crear el controlador REST

Ahora que ya hemos especificado el mapeo de ruta, vamos a crear el código que se ejecutará cuando se detecten las URL previstas. Para ello crearé una Clase de controlador de Web API y la llamaré ClientesController (El nombre ha de terminar en Controller, ya que .NET quitará Controller para determinar el nombre del controlador en la URL)

Esta clase representará un Servicio REST, que podrá aceptar diferentes protocolos HTTP, así que aparecerán los métodos Get, Post, Put y Delete. Se pueden eliminar los que no interesen. En mi caso, como sólo se van a poder recuperar Clientes, me quedaré con los métodos Get.

Para ello, voy a definir el modelo de datos en un fichero Cliente.cs, será una clase con las propiedades DNI, Nombre y Apellidos (IMPORTANTE: Para que la serialización sea correcta, se ha de añadir el atributo DataContract a la clase y DataMember a las propiedades)

Después, en la clase ClientesController, defino un array que simbolizará el repositorio de clientes y rellenaré el método Get(), que devolverá todos los clientes, y el método Get(String dni), que acepta un parámetro dni

Pues con esto ya podemos probar las URL y ver qué nos devuelve el navegador.

URL: http://localhost:55626/api/clientes

URL: http://localhost:55626/api/clientes/44444444K

En la siguiente entrada veremos cómo podemos consumir este servicio mediante JQuery.

¡Hasta la próxima!

Rupert.

Servicios Web: SOAP y REST…

Antes de marcharnos de vacaciones, vamos a hablar un poco de los servicios web.

En las aplicaciones corporativas actuales, es casi inevitable encontrarnos con entornos en los cuales es necesario comunicar diferentes plataformas, exponiendo datos o funcionalidades.

Supongamos la siguiente infraestructura de aplicación:

En esta infraestructura nos encontramos con diferentes entornos, plataformas, lenguajes y limitaciones. Para poder comunicar estos elementos entre sí, deberemos recurrir a los servicios web. La cuestión es… ¿SOAP o REST? Para intentar arrojar una pequeña luz a la respuesta, vamos a ver qué implica cada uno de estos servicios.

Servicios Web: SOAP

SOAP es el acrónimo de Simple Object Access Protocol y su cometido es exponer una serie de operaciones de negocio a modo de servicios. El modo de transmisión de datos entre el cliente y el servidor es XML.

En ocasiones, los servicios web SOAP pueden resultar más pesados en las aplicaciones debido a que el XML que se transmite, no es un XML “limpio”. Es decir, se envía un XML con una estructura determinada, lo que en algunas situaciones implica procesar la lectura de los datos como una tarea tediosa.

Por otro lado, el protocolo HTTP estándar hace más fácil al modelo SOAP transmitirse a través de firewalls y proxies.

Servicios Web: REST

REST es el acrónimo de Representational State Transfer y describe un conjunto de principios de arquitectura en los cuales los datos se transmiten a través de una interfaz estandarizada mediante HTTP.

Bien, pero ¿qué tipo de servicios elijo?

REST es más sencillo de desarrollar, desplegar y consumir. Ya que se hacen llamadas directamente a datos. Además el trabajo con REST proporciona más flexibilidad y escalabilidad, por lo que se convierte en una opción muy buena para trabajar con tecnologías como Javascript.

SOAP es una buena opción si lo que nos interesa es reforzar la seguridad del servicio. Ya que además de aceptar SSL aporta por su parte WS-Security.

En los siguientes artículos explicaré cómo crear servicios REST y SOAP en diferentes tecnologías.

¡Hasta la próxima!

Rupert.

© 2019 Programando con Rupert

Sé cambiar el Footer, pero me apetece decir que este tema es de Anders NorenParriba' ↑