lunes, 14 de agosto de 2023

¿Qué es una API REST?

 


Después de un tiempo me he decidido a escribir una nueva entrada en este pequeño escaparate del conocimiento, no sé si es por el calor del verano pero me ha dado por volver antes de Navidad. Esta vez, mi parada va a ser en algo muy utilizado en la actualidad por muchos de vosotros y por mi mismo que he programado partes de alguno. ¿De qué está hablando este?, os preguntareis, pues os voy a dar una pista, es un interfaz de programación de aplicaciones o más conocido como API. Es un conjunto de reglas que definen cómo las aplicaciones o los dispositivos pueden conectarse y comunicarse entre sí para diversas funcionalidades, pero la que más nos compete es para la obtención de datos de una forma rápida y segura. Pero si damos una vuelta más a la noria llegaremos a la API REST que es una API que cumple los principios de diseño del estilo de arquitectura REST o transferencia de estado representacional, por este motivo, las API REST a veces se conocen como API RESTful.

REST es una arquitectura para aplicaciones en redes (REpresentational State Transfer). Pero si seguimos dando vueltas al tema llegaremos a RESTful, que por otro lado, son programas (a modo de web service o API), basados en REST. Como diría el gran Groucho Marx, "la parte contratante de la primera parte considerada como la parte contratante de la primera parte" ,vamos más de lo mismo a grandes rasgos.


La arquitectura REST, que fue definida por primera vez en 2000 por el  científico de sistemas,Dr.Roy Fielding, en su tesis doctoral, proporciona un nivel relativamente alto de flexibilidad y libertad a los desarrolladores. 

All sizes | Roy Fielding | Flickr - Photo Sharing! 

La flexibilidad es solo una de las razones más importantes por las que han surgido las APIs como método común para conectar componentes y aplicaciones en una arquitectura de microservicios y usarlos de una manera cómoda por los usuarios finales que les importa poco lo que tenga en las tripas el servicio, ellos solo quieren obtener datos y más datos. Por ejemplo, la temperatura de su ciudad o del lugar de vacaciones, cual fue el valor de última cotización de las acciones de Apple en la bolsa, etc.

Las API son conjuntos de definiciones y protocolos que se utilizan para diseñar e integrar el software de las aplicaciones que se han desarrollado y podría considerarse como el contrato entre el proveedor de información y el usuario o un restaurante de peticiones, donde se establece el contenido que se necesita por parte del consumidor (la llamada al camarero) y el que requiere el productor (la respuesta del camarero), sin importar mucho como lo ha cocinado el chef. 

Por ejemplo, el diseño de una API de servicio de búsqueda de localizaciones de supermercados podría requerir que el usuario escribiera un código postal y que el productor diera una respuesta  sería el conjunto de los más cercanos. En otras palabras, las API le permiten interactuar con una computadora o un sistema para obtener datos o ejecutar una función, de manera que el sistema comprenda la solicitud y la cumpla.

Imagínelas como si fueran los mediadores entre los usuarios o clientes y los recursos o servicios web que quieren obtener, que no tenga el chef que tomar la comanda, hacer el plato y llevárselo al comensal por decirlos así. Además, las empresas pueden compartir recursos e información de una forma segura, con el control y
login, lo cual les permite determinar el contenido al que puede acceder cada usuario. Otra ventaja de las
API es que usted no necesita saber cómo se recibe el recurso ni de dónde proviene , vamos que el chef es el que le prepara y cocina los datos y no tiene porque decir la receta o si, eso ya lo decide él, pero  lo que está claro es que el dato tiene que ser bueno para que el cliente quiera repetir.



lunes, 13 de enero de 2020

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL




Pentaho Data Integration (PDI) o más conocida por el nombre Kettle  es uno de los componentes de Pentaho Suite, es una herramienta de las que hablamos en la entrada anterior en este blog. Con esta herramienta podemos crear procesos ETLs con enorme facilidad y destaca por ser Open Source. Tiene una interface gráfica llamada Spoon


Pentaho Data Integration Demo
  
Tras esta breve introducción paso a comentar que esta herramienta contine un fichero de configuración general donde se almacenan las variables globales y que vamos a poder usarlo para poder parametrizar nuestros jobs y nuestras transformaciones de una forma comoda. Es muy util para poder trabajar en distintos entornos (pre-producción, produccíon o desarrollo), en diferentes conexiones de bases de datos, directorios donde se encuantran nuestros procesos, etc. 

En uno de los foros de la comunidad de Pentaho encontré el siguiente problema que tiene un usuario. Partiendo de esta duda vamos a dar a conocer una variable llamada KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL.
 

Ocurre que en Kettle cuando un campo es de tipo String,cuyo campo puede venir de un tipo VARCHAR y un TEXT de una Base de Datos, el problema es que en Kettle cuando un campo está vacío en la Base de Datos nuestra herramienta lo interpreta como un campo NULL y como bien sabemos no es lo mismo. Esto nos puede dar quebraderos de cabeza o tener que añadir pasos a nuestro proceso ETL para adaptarlo a nuestra necesidad.

Por defecto, si no ponemos dicha variable con el valor a YES no pone el valor a vacío y lo pone como NULL cuando el registro viene con ese campo vacío.  




Nuestro amigo de la comunidad si que sabe que haciendo este cambio funciona lo que queremos hacer, pero no logra hacerlo, para eso tenemos dos opciones, la primera desde el Spoon deberemos ir a  Editar >  Edit the kettle.properties  file, o con atajo de teclado CRTL+ALT+P. En esta primera opción el cambio se hace dedes la GUI como se ve en la pantalla anterior, es bastante cómodo.
 
La otra opción es ir a nuestra carpeta de usuario de Windows, por ejemplo C:/Usuarios/UserHomePC/ dentro de esta carpeta habrá una llamada .kettle y dentro de la misma un fichero llamado kettle.properties, en este fichero tenemos que encontrar la variable en cuestión y poner el valor del parámetro a YES , recordar que tras hacer estos cambios es conveniente cerrar el Spoon y volver a abrirlo para que surjan efecto. Espero que os sirva para vuestros desarrolos esta buena ayuda.