Page 1 sur 1

Web service REST avec DS en Input

Posté : mar. 08 mars 2016, 15:22:10
par jgoizil
Bonjour,

je cherche à exposer en REST un programme qui contient une DS à occurrence en Input et une autre DS à occurrence en output.
Ce programme a été exposé depuis Liberty en 7.2. (j'ai un doute sur les paramètres de création du service, notamment sur la gestion de la DS en input)

Je souhaite maintenant consommer ce service depuis un autre IBM i.
En général, j'utilise la fonction HTTPGETCLOB mais dans mon cas, je dois envoyer plusieurs valeurs correspondants à mes occurrences de la DS Input.

Quelle est la méthode à utiliser ?
Ne faut il pas utiliser la fonction HTTPPOSTCLOB ?

Si vous avez déjà testé, je suis preneur.

Merci

POST ou GET

Posté : mar. 08 mars 2016, 19:07:54
par cmasse
tout dépend de ce qui a été défini lors de la création

*QUERY_PARAM
les paramètres sont transmis dans l'URL sous la forme ?param1=valeur1&param2=valeur2

*PATH_PARAM
les paramètres sont transmis dans l'URL sous la forme /chemin/valeur, l'URL vue plus haut /chemin{param1} définie le nom du paramètre

*FORM_PARAM
les paramètres sont transmis dans un formulaire contenant une zone de formulaire nommé param1 <input name="param1" type="text"

Posté : jeu. 10 mars 2016, 10:17:50
par jgoizil
Ok c'est à peu près ou j'en étais arrivé.
Il faut dans mon cas utiliser *QUERY_PARAM à la place de *PATH_PARAM.

Par contre, si notre programme attend une DS à occurrence en entrée, ce n'est pas forcément bien pris en compte avec le REST ?

Pour un WS SOAP, ca été fait automatiquement car les paramètres sont passés dans le Body du message.

En REST, ce n'est pas possible d'avoir :
?param1=valeur1&param1=valeur2&param1=valeur3...

Les paramètres doivent aussi être dans le body ?
Ou alors c'est illogique d'avoir une DS à occurrence pour un web service.

Cdt,
Jeremy

DS

Posté : ven. 11 mars 2016, 08:41:58
par cmasse
J'avoue n'avoir jamais testé une DS en entrée, des paramètres individuels ne seraient pas plus simples et plus intuitifs ?

Posté : ven. 11 mars 2016, 08:51:50
par jgoizil
Je pense que si mais l'idée était de partir d'un programme existant qu'on expose en WS.
Sauf qu'on se rend bien compte que ce n'est pas toujours adapté de prendre de l'existant sans modifier la structure du programme.
Un programme exposé en web service doit être pensé dés le début.

D'après ce que j'ai pu voir, c'est possible en passant les paramètres directement dans le body et non dans l'URL (correspond au "Wrap input parameters") pour gérer une DS.

par contre, on devrait pouvoir gérer une liste de paramètre en entrée (je pense à une liste de clients ou un truc dans le genre) du type
?param1=valeur1&param1=valeur2&param1=valeur3