Intercambio de información en aplicaciones XML, JSON y YAML

Actualmente, la mayoría de aplicaciones que utilizamos en nuestra vida diaria, envían y reciben información constantemente, y no solo refiriéndose a las aplicaciones que tenemos instaladas en nuestro dispositivo móvil, sino también a aquellas a las que ingresamos a través de internet o instalamos en nuestra computadora. Para que este intercambio de información se cumpla correctamente, se necesita algo que guíe los datos hacia donde tienen que llegar y como regresar.

desarrollo-diseno-web-tijuana

Si bien existen lenguajes de programación que nos permiten manejar la información de una página web, ¿qué pasa cuando la información que necesitamos tiene que ser obtenida desde otra página o aplicación?. Para estos casos fueron creados los formatos de intercambio de información y las llamadas APIs.

Comencemos definiendo que es una API. Se define como un conjunto de funciones que permiten el acceso a datos de otros sistemas, esto quiere decir, funciona como una llave que da acceso a la información que se maneja en un sistema diferente al nuestro. Para comprenderlo mejor, veamos algunos ejemplos de aplicaciones que hacen uso de APIs.

Aplicación de transporte

Todos hemos utilizado o al menos hemos escuchado hablar de la popular aplicación móvil de Uber , pues bien esta cuenta con dos, una para clientes y otra para choferes, por ahora nos concentraremos en la que está dirigida a los clientes.

Cuando queremos solicitar el servicio de Uber, abrimos la aplicación y esta nos muestra un mapa en donde se ven todos los autos de Uber que se encuentran cerca de nosotros y que están disponibles. Es ahí donde entran las APIs, como notaremos, el mapa que la aplicación utiliza pertenece a Google Maps pero con la singularidad de que el sistema Uber puede poner su información en el como si le perteneciera. Esto ocurre gracias a que Google cuenta con una API para su mapa, esta API es libre y cualquiera puede utilizarla y modificarla para adaptarla a sus necesidades, cabe aclarar que esto no significa que Google nos permita cambiar su mapa o su sistema, quiere decir, que te deja utilizar la información que ellos han obtenido y que utilizan en su mapa (calles, ciudades, lugares, etc.) para poder replicarlo y utilizarlo.

Sistemas de pago en línea

Tomando como refencia PayPal - Esta plataforma hace uso de las APIs de manera diferente a Uber. PayPal crea una API para cada uno de sus usuarios, esta API sirve para obtener toda la información que el usuario tiene registrada en su cuenta.

¿Para que funciona esto? Bueno, algunas personas cuentan con tiendas en línea en la que reciben pagos a través de PayPal, entonces, ¿cómo podrían ellos asegurarse de que PayPal le ha atribuido el dinero que ganaron? PayPal ya ofrece todas las herramientas para ingresar su sistema de pago en nuestros sitios, así que lo único que tendríamos que hacer es ingresar nuestro número de API (lo podemos obtener ingresando a nuestra cuenta en PayPal), ingresamos ese número a donde se nos indica y listo, ya tenemos la llave de acceso de nuestra cuenta PayPal

programador-web-trabajando-laptop-codigo html5

Live streaming

Hoy en día no hay quien no conozca la reconocida plataforma de Google: YouTube esta utiliza distintas APIs, pero enfoquémonos en una diferente a los ejemplos anteriores, esta sería una API Streaming (o de descarga continua).

¿Por qué es diferente? Cuando vemos el mapa en la aplicación de Uber, notamos que se actualiza cada cierto tiempo, es decir, vemos los pequeños iconos de automóviles en ciertos puntos del mapa, estos se quedan estáticos y unos segundos después se mueven de nuevo. Ocurre esto ya que la API le solicita al servidor que le digan en que parte del mapa se encuentran los autos, el servidor le brinda la información, entonces la API regresa con los datos que obtuvo y finalmente cierra la conexión tenía con el servidor, y cuando requiere nuevamente la información, abre nuevamente la conexión.

comercio-electronico-tijuana

En YouTube se maneja el Streaming, que es cuando nosotros podemos ver lo que una persona está grabando, todo en tiempo real. Cuando un usuario accede a un video que se encuentra en Streaming, abre una conexión con el servidor donde se están almacenando los datos del video, entonces el servidor le devuelve lo que está recibiendo y el usuario lo ve, pero esa conexión no se cierra, se mantiene abierta y actualizando los datos enviados constantemente. Este tipo de APIs también es utilizada por plataformas como Netflix y Twitch.

Sea cual sea la función que le demos a una API, esta necesita de algo le indique la información que debe llevar y recibir, y para eso tenemos los formatos de intercambio de información. Estos formatos fueron creados gracias a la necesidad de tener estándares de como enviar datos en completo orden, especialmente cuando se trata de sistemas muy amplios y que requieren realizar peticiones a servidores de manera constante, pero que, a su vez, estos estándares pudieran ser entendibles por las personas. Y es por eso que existen los estándares XML, JSON y YAML.

XML (Lenguaje de marcado extensible)

XML no es solamente utilizado en el ámbito de las páginas web, también podemos verlo funcionando en las bases de datos, en los documentos de texto y hojas de cálculo, entre muchos más. En lo que se refiere a las aplicaciones web y móviles, XML es utilizado para estructurar los datos que se manejan dentro ellas, además de permitir comunicaciones entre plataforma que no serían compatible por ningún otro medio. Por ejemplo, nos permitiría obtener información de una base de datos de SQL que funciona en el sistema operativo de Windows y una base de datos Oracle en el sistema operativo Linux.

editor-interfaz-consola-json


Como estructurar datos en XML

Como ya se mencionó, XML tiene una estructura parecida a HTML, pero a diferencia de este, no tiene reglas específicas en cuanto a las etiquetas que usa. Por ejemplo, imaginemos estructurando los datos de un menú para nuestro restaurante en XML, y cada platillo tiene la siguiente información: nombre y precio. ¿Cómo lo estructuraríamos? Primero definiríamos como va a iniciar nuestra estructuración. Vamos a guardar la información de nuestros platillos, pero todos esos platillos pertenecen a un menú, así que “Menú” es el objeto de donde se desglosarán todos los demás. Quedaría de la siguiente manera:

Repasemos esa estructuración, los platillos pertenecen a un menú, y es por eso que se encuentran entre las etiquetas, además, cada uno tiene su nombre y su precio, por eso dentro de cada uno fueron colocadas las etiquetas: nombre y precio. Lo que hacen esas etiquetas es mostrarnos el significado de los valores, por ejemplo, ahora ya sabemos que “Ensalada” en el nombre de un platillo y que no se está colocando ahí como simple texto. A pesar de que la popularidad de XML ha disminuido un poco gracias a las nuevas tecnologías ha aparecido y las que siguen apareciendo, es conocido que sigue siendo uno de los más fuertes y que sigue siendo utilizado por gran porcentaje de sistemas que vemos hoy en día. Además, gracias a que es aplicable en otras áreas aparte del desarrollo web, podemos afirmar que este estándar no desaparecerá pronto.

Ventajas de XML

a) La estructura que tienen la información guardad en XML es muy sencilla de comprender, tanto por software como por personas, b) Está diseñado para ser utilizado en cualquier idioma e implementado cualquier alfabeto, gracias a que las etiquetas que utiliza las genera el usuario, c) Tiene una estructura jerárquica la cual es sencilla de aprender.

Desventajas de XML

a) Cuando se trata de almacenar gran cantidad de datos, XML puede llegar a ser muy pesado y los sistemas tardarían algo más de tiempo en leerlo, b) XML tiene varias versiones y en algunos casos de han dado problemas de incompatibilidad que provoca el tener que rehacer toda la estructuración.

agencia-marketing-digital-seo-tijuana

JSON (Notación de objetos de JavaScript)

JSON nació originalmente como una alternativo al uso de XML y poco a poco aumento su popularidad hasta que llegar a ser una de los estándares más utilizados por los desarrolladores en todo el mundo. La idea principal era crear un lenguaje de estructuración que realizara tareas similares a las que realiza XML pero que lograra que el movimiento de información fuese más ligero, especialmente para aquellos sistemas que manejaban enormes cantidades de información.

Antes que nada, debemos familiarizarnos con la sintaxis que utiliza JSON. Los datos, al igual que XML, mantienen un orden jerárquico y es aquí donde se introduce el uso de las llaves “{}” para la estructuración. Tomando como referencia el ejemplo que mencionábamos anteriormente sobre platillos. ¿Cómo estructuraríamos algo así en JSON?

Como podemos ver, hay una diferencia entre los valores y es que el valor de “nombre” también hace uso de las comillas dobles teniendo como resultado “Ensalada”, mientras que el valor de “precio” solo tiene el número 35, sin comillas. ¿A qué se debe esto? En programación y bases de datos hay muchos tipos de valores, entre ellos se encuentran los valores “string” (que se refiere a texto simple) e “int” (que serían números). La palabra “Ensalada” sería un string, ya que es solo texto que no funcionara para nada más que para identificar a un platillo y el numero 35 sería un int, ya que representa un valor con el que se pueden realizar operaciones.


editor-texto-codificando-xml

Existen herramientas que nos ayudan a saber cuándo nuestra estructura de JSON es correcta o incorrecta, una de ella es jsonlint, en esta herramienta podemos insertar nuestro fragmento JSON y entonces nos aparecerá las líneas en las que tenemos errores o simplemente aparecerá la frase “Valid JSON” cuando todo está bien. Otra popular herramienta es jsonviewer, y ayuda a visualizar todos los datos que hay dentro de JSON en un esquema ordenado

Ventajas de JSON

a) Su estructura es más simple y ligera, b) Sus archivos suelen pesar menos, c) La velocidad con la que procesa los datos es más rápida. Funciona con todos los lenguajes de programación.

Desventajas de JSON

a) Tiene una curva de aprendizaje más amplia que XML, b) La utilización de caracteres especiales como parte de su estructuración puede generar confusiones, especialmente si la persona a cargo de hacerlo no está familiarizada con sus sintaxis. C) A simple vista es más difícil de interpretar.

diseno-grafico-tijuana-logos

YAML

YAML lleva más de diez años en el mercado, pero recientemente ha visto crecer su popularidad gracias a lenguajes de programación como Ruby, esto gracias a que Ruby adoptó a YAML como su estándar por defecto, es decir, es el principal estándar con el que se maneja. El principal objetivo que se tuvo al desarrollarlo fue crear un lenguaje de intercambio de información similar a JSON pero que a su vez fuera más sencillo de entender por las personas. vemos como sería el ejemplo del menú estructurado con YAML.

Al ser un estándar muy sencillo tiene una mayor velocidad que JSON a la hora de procesar la información. Aunque este formato es especialmente utilizado para archivos de configuración es aplicaciones, estos archivos guardan la información que vera el usuario, los permisos y accesos, etc. Poco a poco va tomando importancia dentro de la comunidad de desarrollo, gracias a la simpleza con la muestra los datos, eso sí, hay que tomar en cuenta que, a pesar de su formato sencillo, YAML es muy estricto, es decir, la estructura que lleva de tener un perfecto orden para poder ser procesado. Gracias a todos estos formatos, podemos obtener grandes cantidades de información a través de la red y utilizar todas esas apps que mejoran nuestra vida diaria.