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:

$ curl --version

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

  1. Encuentra una API pública que proporcione cotizaciones de monedas.
  2. Escribe un programa CL que realice una solicitud a esta API y guarde la respuesta en un archivo.
  3. Extrae y muestra la cotización de una moneda específica.

Ejercicio 2: Integración con una API de Tareas

  1. Encuentra una API pública que permita gestionar tareas (crear, leer, actualizar, eliminar).
  2. Escribe un programa CL que cree una nueva tarea utilizando esta API.
  3. 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.

© Copyright 2024. Todos los derechos reservados