En este módulo, aprenderemos cómo integrar RPG con tecnologías modernas utilizando APIs y JSON. Este conocimiento es crucial para desarrollar aplicaciones que interactúan con otros sistemas y servicios web.

¿Qué es una API?

Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas y definiciones que permiten a diferentes aplicaciones comunicarse entre sí. Las APIs son esenciales para la integración de sistemas y la creación de aplicaciones que pueden interactuar con servicios externos.

Tipos de APIs

  • APIs REST: Utilizan HTTP y son muy comunes en aplicaciones web.
  • APIs SOAP: Utilizan XML y son más estructuradas y seguras.
  • APIs GraphQL: Permiten consultas más flexibles y específicas.

¿Qué es JSON?

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos. Es fácil de leer y escribir para los humanos y fácil de parsear y generar para las máquinas.

Estructura de JSON

  • Objetos: Colecciones de pares clave-valor.
  • Arreglos: Listas ordenadas de valores.
  • Valores: Pueden ser cadenas, números, objetos, arreglos, true, false, o null.

Ejemplo de JSON

{
  "nombre": "Juan",
  "edad": 30,
  "ciudad": "Madrid",
  "hobbies": ["leer", "viajar", "programar"]
}

Integración de RPG con APIs y JSON

Configuración del Entorno

Para trabajar con APIs y JSON en RPG, necesitamos asegurarnos de tener las bibliotecas y herramientas adecuadas. Una de las herramientas más comunes es HTTPAPI, una biblioteca de código abierto para realizar solicitudes HTTP desde RPG.

Instalación de HTTPAPI

  1. Descarga la biblioteca desde HTTPAPI.
  2. Sigue las instrucciones de instalación proporcionadas en el sitio web.

Realizando una Solicitud HTTP

A continuación, veremos cómo realizar una solicitud HTTP GET para obtener datos en formato JSON.

Ejemplo de Código RPG

H DFTACTGRP(*NO) ACTGRP(*NEW)

D/copy httpapi_h

D url             S             256A   varying
D rc              S             10I 0
D response        S             1024A   varying

 /free
    // URL del API
    url = 'https://api.ejemplo.com/datos';

    // Realizar la solicitud GET
    rc = http_url_get(url: %addr(response): %len(response));

    // Verificar si la solicitud fue exitosa
    if rc = 1;
       dsply response;
    else;
       dsply 'Error en la solicitud HTTP';
    endif;

    *inlr = *on;
 /end-free

Parseando JSON en RPG

Para trabajar con los datos JSON obtenidos, necesitamos parsearlos. Podemos usar la biblioteca YAJL (Yet Another JSON Library) para esto.

Instalación de YAJL

  1. Descarga la biblioteca desde YAJL.
  2. Sigue las instrucciones de instalación proporcionadas en el sitio web.

Ejemplo de Código para Parsear JSON

H DFTACTGRP(*NO) ACTGRP(*NEW)

D/copy yajl_h

D jsonString      S             1024A   varying
D jsonNode        S               O   CLASS(*JAVA:'com/ibm/as400/data/YAJLNode')
D jsonParser      S               O   CLASS(*JAVA:'com/ibm/as400/data/YAJLParser')
D nombre          S             256A   varying
D edad            S             10I 0

 /free
    // JSON de ejemplo
    jsonString = '{"nombre": "Juan", "edad": 30}';

    // Crear el parser
    jsonParser = new_YAJLParser();

    // Parsear el JSON
    jsonNode = jsonParser@parse(jsonString);

    // Extraer los valores
    nombre = jsonNode@getString('nombre');
    edad = jsonNode@getInt('edad');

    // Mostrar los valores
    dsply 'Nombre: ' + nombre;
    dsply 'Edad: ' + %char(edad);

    *inlr = *on;
 /end-free

Ejercicio Práctico

Ejercicio 1: Realizar una Solicitud HTTP y Parsear JSON

  1. Realiza una solicitud HTTP GET a la API https://jsonplaceholder.typicode.com/users/1.
  2. Parsear la respuesta JSON para extraer el nombre y el correo electrónico del usuario.
  3. Mostrar los valores en la consola.

Solución

H DFTACTGRP(*NO) ACTGRP(*NEW)

D/copy httpapi_h
D/copy yajl_h

D url             S             256A   varying
D rc              S             10I 0
D response        S             1024A   varying
D jsonNode        S               O   CLASS(*JAVA:'com/ibm/as400/data/YAJLNode')
D jsonParser      S               O   CLASS(*JAVA:'com/ibm/as400/data/YAJLParser')
D nombre          S             256A   varying
D email           S             256A   varying

 /free
    // URL del API
    url = 'https://jsonplaceholder.typicode.com/users/1';

    // Realizar la solicitud GET
    rc = http_url_get(url: %addr(response): %len(response));

    // Verificar si la solicitud fue exitosa
    if rc = 1;
       // Crear el parser
       jsonParser = new_YAJLParser();

       // Parsear el JSON
       jsonNode = jsonParser@parse(response);

       // Extraer los valores
       nombre = jsonNode@getString('name');
       email = jsonNode@getString('email');

       // Mostrar los valores
       dsply 'Nombre: ' + nombre;
       dsply 'Email: ' + email;
    else;
       dsply 'Error en la solicitud HTTP';
    endif;

    *inlr = *on;
 /end-free

Conclusión

En esta sección, hemos aprendido cómo integrar RPG con APIs y JSON. Hemos cubierto los conceptos básicos de las APIs y JSON, cómo realizar solicitudes HTTP y cómo parsear datos JSON en RPG. Estos conocimientos son fundamentales para desarrollar aplicaciones modernas que interactúan con otros sistemas y servicios web.

En el próximo módulo, exploraremos cómo manejar XML en RPG, otra tecnología clave para la integración de sistemas.

© Copyright 2024. Todos los derechos reservados