En este módulo, aprenderemos cómo interactuar con APIs (Interfaz de Programación de Aplicaciones) utilizando el Lenguaje de Control (CL). Las APIs permiten que diferentes sistemas y aplicaciones se comuniquen entre sí, lo que es esencial para la integración de sistemas y la automatización de procesos.
Objetivos del Módulo
- Entender qué es una API y cómo funciona.
- Aprender a realizar llamadas a APIs desde un programa CL.
- Manejar las respuestas de las APIs.
- Implementar ejemplos prácticos de uso de APIs.
¿Qué es una API?
Una API es un conjunto de definiciones y protocolos que permiten que una aplicación se comunique con otra. Las APIs son utilizadas para:
- Acceder a servicios web.
- Interactuar con bases de datos.
- Integrar funcionalidades de terceros en nuestras aplicaciones.
Tipos de APIs
- REST (Representational State Transfer): Utiliza HTTP y es el tipo más común de API.
- SOAP (Simple Object Access Protocol): Utiliza XML y es más estricto en su estructura.
- GraphQL: Permite consultas más flexibles y específicas.
Realizando Llamadas a APIs desde CL
Para interactuar con una API desde un programa CL, generalmente utilizamos comandos del sistema operativo que permiten realizar solicitudes HTTP. En sistemas IBM i, podemos usar herramientas como QSH
(QShell) o curl
.
Ejemplo Práctico: Llamada a una API REST
Vamos a realizar una llamada a una API REST que devuelve información sobre el clima. Utilizaremos curl
para hacer la solicitud HTTP.
Paso 1: Configuración del Entorno
Asegúrate de que curl
esté disponible en tu sistema IBM i. Puedes verificarlo ejecutando el siguiente comando en QShell:
Paso 2: Escribiendo el Programa CL
A continuación, se muestra un ejemplo de un programa CL que realiza una solicitud GET a una API de clima y guarda la respuesta en un archivo.
PGM DCL VAR(&CITY) TYPE(*CHAR) LEN(50) VALUE('London') DCL VAR(&API_KEY) TYPE(*CHAR) LEN(50) VALUE('your_api_key_here') DCL VAR(&URL) TYPE(*CHAR) LEN(200) DCL VAR(&CMD) TYPE(*CHAR) LEN(500) DCL VAR(&RESPONSE_FILE) TYPE(*CHAR) LEN(50) VALUE('/tmp/weather_response.json') CHGVAR VAR(&URL) VALUE('http://api.openweathermap.org/data/2.5/weather?q=' *CAT &CITY *CAT '&appid=' *CAT &API_KEY) CHGVAR VAR(&CMD) VALUE('curl -s "' *CAT &URL *CAT '" -o ' *CAT &RESPONSE_FILE) QSH CMD(&CMD) ENDPGM
Explicación del Código
- DCL VAR(&CITY): Declara una variable para la ciudad.
- DCL VAR(&API_KEY): Declara una variable para la clave de la API.
- DCL VAR(&URL): Declara una variable para la URL de la API.
- DCL VAR(&CMD): Declara una variable para el comando
curl
. - DCL VAR(&RESPONSE_FILE): Declara una variable para el archivo donde se guardará la respuesta.
- CHGVAR VAR(&URL): Construye la URL de la API con la ciudad y la clave de la API.
- CHGVAR VAR(&CMD): Construye el comando
curl
para hacer la solicitud y guardar la respuesta. - QSH CMD(&CMD): Ejecuta el comando
curl
en QShell.
Manejo de Respuestas de la API
Una vez que la respuesta de la API se guarda en un archivo, podemos procesarla en nuestro programa CL. Generalmente, las respuestas de las APIs están en formato JSON o XML.
Ejemplo: Procesando una Respuesta JSON
Para procesar una respuesta JSON, podemos usar herramientas adicionales como jq
para filtrar y extraer datos específicos.
PGM DCL VAR(&CITY) TYPE(*CHAR) LEN(50) VALUE('London') DCL VAR(&API_KEY) TYPE(*CHAR) LEN(50) VALUE('your_api_key_here') DCL VAR(&URL) TYPE(*CHAR) LEN(200) DCL VAR(&CMD) TYPE(*CHAR) LEN(500) DCL VAR(&RESPONSE_FILE) TYPE(*CHAR) LEN(50) VALUE('/tmp/weather_response.json') DCL VAR(&TEMP) TYPE(*CHAR) LEN(10) CHGVAR VAR(&URL) VALUE('http://api.openweathermap.org/data/2.5/weather?q=' *CAT &CITY *CAT '&appid=' *CAT &API_KEY) CHGVAR VAR(&CMD) VALUE('curl -s "' *CAT &URL *CAT '" -o ' *CAT &RESPONSE_FILE) QSH CMD(&CMD) CHGVAR VAR(&CMD) VALUE('jq .main.temp ' *CAT &RESPONSE_FILE) QSH CMD(&CMD) OUTPUT(&TEMP) SNDPGMMSG MSG('The temperature in ' *CAT &CITY *CAT ' is ' *CAT &TEMP *CAT 'K') ENDPGM
Explicación del Código
- QSH CMD(&CMD) OUTPUT(&TEMP): Ejecuta el comando
jq
para extraer la temperatura del archivo JSON y guarda el resultado en la variable&TEMP
. - SNDPGMMSG: Envía un mensaje de programa con la temperatura extraída.
Ejercicios Prácticos
Ejercicio 1: Llamada a una API de Cotización de Monedas
- Encuentra una API pública que proporcione cotizaciones de monedas.
- Escribe un programa CL que realice una solicitud a esta API y guarde la respuesta en un archivo.
- Extrae y muestra la cotización de una moneda específica.
Ejercicio 2: Integración con una API de Tareas
- Encuentra una API pública que permita gestionar tareas (crear, leer, actualizar, eliminar).
- Escribe un programa CL que cree una nueva tarea utilizando esta API.
- Escribe otro programa CL que lea y muestre todas las tareas.
Conclusión
En este módulo, hemos aprendido cómo interactuar con APIs utilizando el Lenguaje de Control (CL). Hemos visto cómo realizar solicitudes HTTP, manejar respuestas y procesar datos. Las APIs son una herramienta poderosa para integrar sistemas y automatizar procesos, y ahora tienes las habilidades básicas para empezar a utilizarlas en tus programas CL.
En el próximo módulo, exploraremos técnicas de depuración y optimización para mejorar el rendimiento y la eficiencia de tus programas CL.
Curso de CL (Lenguaje de Control)
Módulo 1: Introducción a CL
- ¿Qué es el Lenguaje de Control?
- Configuración de tu Entorno
- Sintaxis y Estructura Básica
- Escribiendo tu Primer Programa CL
Módulo 2: Comandos Básicos de CL
- Introducción a los Comandos de CL
- Comandos de Gestión de Archivos
- Comandos de Gestión de Trabajos
- Comandos de Gestión del Sistema
Módulo 3: Variables y Expresiones
- Entendiendo las Variables
- Definiendo y Usando Variables
- Expresiones y Operadores
- Manipulación de Cadenas
Módulo 4: Estructuras de Control
Módulo 5: Comandos Avanzados de CL
- Operaciones Avanzadas de Archivos
- Programación Avanzada de Trabajos
- Comandos de Configuración del Sistema
- Seguridad y Permisos