Distinguer la méthode lors de l'appel d'un Web Service

configuration Apache, Zend et PHP , Web services
Répondre
Xavier.
Messages : 9
Enregistré le : ven. 24 mars 2023, 10:38:55

Distinguer la méthode lors de l'appel d'un Web Service

Message par Xavier. »

Bonjour,

Je débute sur IWS, et cherche à déclarer un Web Service qui pointe sur un programme de service avec plusieurs méthodes.
J'ai suivi les différents tutoriels trouvés et fait les déclarations nécessaires sous IWS.

J'ai réussi à déployer un Web Service nommé PRPP000M, qui contient 2 méthodes : SESSIONS et PREPARATEUR (méthodes définies dans le programme de service associé), jusque là ça va.

Image

Mais je n'arrive pas lors de l'appel à définir quelle méthode je veux utiliser.

Si je tape :
J'obtiens en retour le résultat de l'appel de la méthode SESSIONS, retour avec paramètre d'entrée à blanc, comme s'il prenait la méthode SESSIONS par défaut.

D'ailleur si je tape :
J'obtiens bien en retour le résultat de l'appel de la méthode SESSIONS avec le paramètre donné.

Pourquoi prend-il SESSIONS par défaut ?
Comment indiquer dans la syntaxe la méthode souhaitée ?

Merci

nbonnet
Messages : 200
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: Distinguer la méthode lors de l'appel d'un Web Service

Message par nbonnet »

Bonjour,

Le serveur analyse l'URL reçue pour savoir quelle procédure appelée.

Ici, les 2 méthodes sont en GET, avec 1 paramètre en QUERY_PARAM : au niveau de la syntaxe d'appel, le serveur n'a pas moyen de différencier un appel à SESSIONS ou PREPARATEUR.

Vous pouvez indiquer pour chacune des 2 méthodes un "URI Path template".
Par exemple pour la méthode SESSIONS indiquez : /sessions
L'URL d'appel sera alors :

Code : Tout sélectionner

http://mlpdev.mlp.fr:10035/web/services/PRPP000M/sessions?Site=4
Indiquez une autre valeur pour PREPARATEUR et cela fonctionnera
Nathanaël

Xavier.
Messages : 9
Enregistré le : ven. 24 mars 2023, 10:38:55

Re: Distinguer la méthode lors de l'appel d'un Web Service

Message par Xavier. »

Merci beaucoup pour cette réponse rapide !

Xavier.
Messages : 9
Enregistré le : ven. 24 mars 2023, 10:38:55

Re: Distinguer la méthode lors de l'appel d'un Web Service

Message par Xavier. »

J'avance bien, j'ai pu déclarer mon Web Service, et tester avec succès les quelques options disponibles pour le passage de paramètres.

J'aurais quand même une petite question subsidiaire :

Au final j'ai déclaré mon Web Service avec l'option "Wrap input parameters" pour passer les paramètres dans le corps de la requête.
Dans ma procédure RPGLE le paramètre en entrée est déclaré en tant que

Code : Tout sélectionner

D  Matricule                     6A
Mais au niveau de l'appel du Web Service il faut que je lui passe comme ceci :

Code : Tout sélectionner

{
    "MATRICULE": "199911"
}
Si MATRICULE n'est pas écrit en Majuscule cela ne fonctionne pas, il ne reconnait pas le paramètre passé.
Y'a-t-il un moyen de rendre le système case insensitive, ou au moins équivalent à ce qui est déclaré dans le programme ?

Bon, ça reste un peu superflu, mais ce serait plus clair.

Merci

SebastienB
Messages : 51
Enregistré le : ven. 22 janv. 2021, 10:21:13

Re: Distinguer la méthode lors de l'appel d'un Web Service

Message par SebastienB »

Bonjour,

s'il s'agit d'un programme de service, dans la déclaration "ctl-opt", il faut enlever la valeur "*dclcase".
Cette option permet de rendre la valeurs case sensitive donc en l’enlevant on retrouve la valeur par défaut qui est non sensitive.

Sébastien.

Xavier.
Messages : 9
Enregistré le : ven. 24 mars 2023, 10:38:55

Re: Distinguer la méthode lors de l'appel d'un Web Service

Message par Xavier. »

Bonjour,

Je n'avais pas l'option initialement, et il n'acceptait que les majuscules.
En rajoutant l'option *DCLCASE, il me prend ma variable telle qu'elle est déclarée dans le programme, c'est donc bien plus clair comme cela.

Merci, je ne connaissais pas cette option.

Répondre