Services WEB basés SQL


   

Un web-service : c'est un logiciel qui interagit avec d'autres au moyen de protocoles universels (http, xml...)


IBM i V7 : Serveur intégré Liberty

 

Il s'agit du nouveau serveur d'application intégré à l'OS pour distribuer les applications Java.

 

Ce serveur supporte JSF, JSP, servlets et services web, et implique peu de ressources et d'administration, c'est le même que celui utilisé par DB2 WebQUERY,

Il est basé sur une version de WAS nommée Liberty profile

 

Lancez le serveur d'administration HTTP, si ce n'est déjà fait par STRTCPSVR *HTTP HTTPSVR(*ADMIN)

Puis loggez vous sur http://<votreas400>:2001/HTTPAdmin/


Nous savions déjà déployer des pgm ILE (RPG ou COBOL) sous forme de Web services

 

Avec la 7.4 + SF99662 (ou SF99722/level 19[7.3], SF99713/level 32[7.2]) nous pouvons aussi déployer des web services (REST uniquement) basés sur SQL

 

 

Premier exemple, une requête SQL simple

 

 

Indiquez ici :

puis par le bouton Add, saisissez une requête SQL


 

Nous pourrions aussi insérer des Services IBM i (SQL as a service)


par exemple

 

Etape suivante

 

 

Paramètres

 

Choix du profil de référence (QWSERVICE/dft)

 

 

Puis récapitulatif :

 

Description du service

 

JDBC

 

Requête, méthode et format de sortie

 

 

une fois le service créé, vous pouvez

 

testons

format HTML, SQLSTATE inclus Format JSON, sans SQLSTATE

 

Avec passage de paramètres

 


ici, un code pays sera transmis

 

placez alors dans la requête un ou plusieurs ?

 

ils serons détectés, en tant que paramètres, le type sera automatiquement attribué en fonction de la colonne testée

 

le lien est fait ici :

 

et cela se retrouve sur l'écran récapitulatif

 

Résultat

 

Single-row

 

 

la différence est là

 

 

 

 

 

Résultat (formaté par Firefox)

 

Données binaires


depuis cette table


 

 

remarquez le type SQL retourné

 

et le type MIME déclaré

 

Résultat


 

Procédure stockées

Soit cette procédure, qui avec un paramètre en entrée (position de début de liste) retourne 50 producteurs




Déployons


Instruction SQL


Résultat "Multi-Row"


Lien avec le paramètre en entrée


Résultat

 

Post / Put

exemple d'insertion de données (création d'une nouvelle ligne)

 

Cette fois, la requête est un INSERT

 

Les paramètres sont détectés

 

Renommons les



retour d'un status à 201 Created




et cochez Wrap Input parameters

pour tester, utilisons soapUI, méthode POST, remarquez le JSON envoyé



si vous avez oublié, le fichier swagger vous rappelle les paramètres attendus

 

En cas d'erreur, cherchez un job QZDASOINIT sous le profil QWSERVICE (ou celui indiqué dans le serveur)

 

une mise à jour




L'un des paramètres est dans le PATH (code), l'autre sous forme de variable ?variable=valeur


testons



 

Dans le même temps, un nouveau script est proposé (même niveau de PTF)

getConfigurationFile.sh , permettant de retouver la configuration complète dans un fichier .properties


Cela doit permettre de redéployer par :

installwebservice.sh     -server DEMO  -propertiesFile    /tmpIWS/SQL01.properties



dans le cas d'un web service basé sur un programme, cela suffit (le pgm contenant sa propre description dans le PCML)

 

dans le cas d'un service basé sur SQL, il faut ajouter

-markupLanguage /tmpIWS/SQL01.xml  







Contenu du fichier :

<dbml restUriPathTemplate="/" version="1.0">
 <program errormessage="" httpheaders="" httpstatusonfailure="500"
httpstatusonsuccess="200" name="requete1"
querytype="multi-row" restConsumes="*/*" restHttpRequestMethod="GET"
restProduces="application/json" returnsqlstate="*ERRORS"
treatwarningaserror="true" trimmode="*TRAILING"
wrapInputParams="false" wrapOutputParam="true"> <sql statement="select * from pays"/> </program> </dbml>

 

Copyright © 2019 VOLUBIS