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