, Débuter avec les webservices

Vous voulez commencer à utiliser des webservices en étant consommateur à partir de votre partition IBMi
Et vous de ne savez pas par ou commencer voici un exemple très simple, prêt à l’emploi que vous pourrez améliorer
on a choisi le site jsonplaceholder.typicode.com qui permet un accès libre , merci à eux
On peut l’utiliser à partir d’un GET et le flux renvoyé est du JSON
On utilisera la fonction QSYS2.HTTP_GET de la manière la plus basic
On parsera le flux recu en utilisant la fonction JSON table

2 prérequis :

Vous devrez avoir une version V7R4

Votre partition devra sortir vers le site jsonplaceholder.typicode.com

**free
ctl-opt dftactgrp(*no) actgrp(*caller);
// Un exemple simple d'un appel de webservice
// on utilise le site   jsonplaceholder.typicode.com
// Vous avez les numéros de 1 à 11
// Le flux renvoyé est du JSON on le parse dans une deuxième requête
//
dcl-s url varchar(256) inz('https://jsonplaceholder.typicode.com/users/1');
dcl-s Response Varchar(10000);
dcl-s nom varchar(100);
dcl-s email varchar(100);
dcl-s ville varchar(100);
dcl-s erreur varchar(200);
// Utilisation de la fonction QSYS2.HTTP_GET
exec sql
 set :response = QSYS2.HTTP_GET(:url) ;
if sqlcode <> 0;
  erreur = 'Erreur appel HTTP_GET : SQLCODE = ' + %char(sqlcode);
  SND-MSG *INFO erreur;
  return;
endif;
// Parsing du JSON avec JSON_TABLE
exec sql select name, email, address_city into
:nom, :email, :ville
 from json_table(
:response, '$' columns ( name varchar(100) path '$.name',
                         email varchar(100) path '$.email',
                         address_city varchar(100) path '$.address.city' ) ) as JT;
if sqlcode <> 0;
  erreur = 'Erreur parsing JSON : SQLCODE = ' + %char(sqlcode);
  SND-MSG *INFO erreur;
  return;
endif;
// Affichage du résultat
SND-MSG *INFO ('Nom : ' + nom);
SND-MSG *INFO ('Email : ' + email);
SND-MSG *INFO ('Ville : ' + ville);
// Fin de traitement
return;

.

Conclusion

Simple et efficace

Vous voyez qu’une connaissance de JSON et indispensable et donc au moins une V7R4

Appeler un webservice c’est assez simple
Attention la mise au point dans certains cas peut être compliqué
les idées d’amélioration seront :
Tester le httpstatus qui peut être renvoyer dans le Header
Parser le flux directement dans la requete http_get

etc …

Pour en savoir plus adressez vous à mes collègues qui sont des spécialistes

Une liste de sites libres pour vous entrainer

Une citation du philosophe Chuck Norris
https://api.chucknorris.io/jokes/random
indispensable, pour bien démarrer la journée


Bored API
https://www.boredapi.com/api/activity
Suggestion d’activité fun


Cat Facts
https://catfact.ninja/fact
Donne un fait amusant sur les chats, pour les « matouvus »


IP API (test IP)
https://ipinfo.io/json

Retourne ton IP, localisation, etc. moins fun mais intéressant

Open-Meteo (météo)
https://api.open-meteo.com/v1/forecast?
Météo gratuite sans clé , les autres nécessitent une clé, vous devrez lui passer des coordonnées