En aquest tema, explorarem com integrar RPG amb tecnologies modernes mitjançant l'ús d'APIs i JSON. Aprendrem què són les APIs, com utilitzar-les des de RPG, i com treballar amb JSON per intercanviar dades de manera eficient.

Què és una API?

Una API (Application Programming Interface) és un conjunt de regles que permeten que diferents aplicacions es comuniquin entre si. Les APIs defineixen els mètodes i les dades que les aplicacions poden utilitzar per interactuar amb altres serveis o aplicacions.

Tipus d'APIs

  • APIs RESTful: Utilitzen el protocol HTTP per realitzar operacions CRUD (Create, Read, Update, Delete).
  • APIs SOAP: Utilitzen el protocol SOAP (Simple Object Access Protocol) i són més complexes que les APIs RESTful.

Què és JSON?

JSON (JavaScript Object Notation) és un format lleuger per a l'intercanvi de dades. És fàcil de llegir i escriure per a humans, i fàcil de parsejar i generar per a màquines.

Exemple de JSON

{
  "nom": "Joan",
  "edat": 30,
  "ciutat": "Barcelona"
}

Utilitzant APIs des de RPG

Configuració de l'Entorn

Abans de començar a treballar amb APIs des de RPG, necessitem assegurar-nos que el nostre entorn està configurat correctament. Això inclou tenir accés a les biblioteques necessàries per a la comunicació HTTP i la manipulació de JSON.

Exemple Pràctic: Consumint una API RESTful

Suposem que volem consumir una API que retorna informació sobre el temps en format JSON. Utilitzarem una API pública per a aquest exemple.

Pas 1: Realitzar una Petició HTTP

Utilitzarem la funció HTTPAPI per realitzar una petició GET a l'API.

Dcl-S url Varchar(256) Inz('http://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Barcelona');
Dcl-S response Varchar(10000);
Dcl-S httpStatus Int(10);

httpStatus = HTTPAPI('GET': url: '': response);
If httpStatus <> 200;
  Dsply ('Error en la petició HTTP: ' + %Char(httpStatus));
  Return;
EndIf;

Pas 2: Parsejar la Resposta JSON

Un cop tenim la resposta de l'API, necessitem parsejar el JSON per extreure la informació que ens interessa.

Dcl-S jsonNode Pointer;
Dcl-S temp Varchar(10);
Dcl-S condition Varchar(50);

jsonNode = JSON_PARSE(response);
temp = JSON_GET_VALUE(jsonNode: 'current.temp_c');
condition = JSON_GET_VALUE(jsonNode: 'current.condition.text');

Dsply ('Temperatura: ' + temp + '°C');
Dsply ('Condició: ' + condition);

Explicació del Codi

  1. Realitzar la Petició HTTP:

    • Definim la URL de l'API amb els paràmetres necessaris.
    • Utilitzem HTTPAPI per realitzar una petició GET.
    • Comprovem l'estat de la resposta HTTP. Si no és 200 (OK), mostrem un missatge d'error.
  2. Parsejar la Resposta JSON:

    • Utilitzem JSON_PARSE per convertir la resposta JSON en un node que podem manipular.
    • Utilitzem JSON_GET_VALUE per extreure valors específics del JSON.

Exercicis Pràctics

Exercici 1: Consumir una API de Monedes

  1. Troba una API pública que proporcioni informació sobre el tipus de canvi de monedes.
  2. Escriu un programa RPG que realitzi una petició a aquesta API i mostri el tipus de canvi entre dues monedes.

Solució Proposada

Dcl-S url Varchar(256) Inz('https://api.exchangerate-api.com/v4/latest/USD');
Dcl-S response Varchar(10000);
Dcl-S httpStatus Int(10);
Dcl-S rate Varchar(10);

httpStatus = HTTPAPI('GET': url: '': response);
If httpStatus <> 200;
  Dsply ('Error en la petició HTTP: ' + %Char(httpStatus));
  Return;
EndIf;

Dcl-S jsonNode Pointer;
jsonNode = JSON_PARSE(response);
rate = JSON_GET_VALUE(jsonNode: 'rates.EUR');

Dsply ('Tipus de canvi USD a EUR: ' + rate);

Exercici 2: Enviar Dades a una API

  1. Troba una API pública que accepti dades en format JSON.
  2. Escriu un programa RPG que enviï dades a aquesta API utilitzant una petició POST.

Solució Proposada

Dcl-S url Varchar(256) Inz('https://jsonplaceholder.typicode.com/posts');
Dcl-S requestBody Varchar(1000) Inz('{"title": "foo", "body": "bar", "userId": 1}');
Dcl-S response Varchar(10000);
Dcl-S httpStatus Int(10);

httpStatus = HTTPAPI('POST': url: requestBody: response);
If httpStatus <> 201;
  Dsply ('Error en la petició HTTP: ' + %Char(httpStatus));
  Return;
EndIf;

Dsply ('Resposta de l\'API: ' + response);

Resum

En aquest tema, hem après què són les APIs i JSON, i com utilitzar-los des de RPG. Hem vist exemples pràctics de com realitzar peticions HTTP i parsejar respostes JSON. També hem practicat amb exercicis per reforçar els conceptes apresos.

En el següent tema, explorarem com gestionar XML des de RPG, una altra tècnica important per a la integració amb tecnologies modernes.

© Copyright 2024. Tots els drets reservats