Formatage message retour en JSON dans webservices

configuration Apache, Zend et PHP , Web services
Répondre
PBL
Messages : 16
Enregistré le : ven. 22 nov. 2019, 15:20:16

Formatage message retour en JSON dans webservices

Message par PBL »

Bonjour,

Sur un webservice en REST déployé sous IWS, nous devons retourner deux messages différents :
- En cas de succès, un message "métier" + un code httpstatus (HTTP response code output parameter) défini dans le programme RPG (ex : 200)
- En cas d'échec, un message d'erreur (Error response output parameter) + un code httpstatus (HTTP response code output parameter) défini dans le programme RPG (ex : 403).

Nous avons testé plusieurs combinaisons avec le message d'erreur construit en JSON dans le programme RPGLE (sauf cas 3) :
1. Message "métier" dans une DS du programme RPGLE :
Dans ce cas, c'est IWS qui construit le retour au format JSON.
Tout fonctionne mais nous ne savons pas gérer les messages de retour en null (c'est une contrainte incontournable de nos normes de service !) : limitation d'IWS ? ( il semblerait que les valeurs nulles retournées par le programme RPGLE soient remplacées par des blancs).

2. Message "métier" construit en JSON par le programme RPGLE :
Dans IWS, nous sommes obligé de définir le message "métier" de retour (Returned output media types) en "*JSON".
- En cas de succès, le message "métier" de retour est mal formaté (ex : "Auteur": "{\"Auteur\": {\"nom\":\"Verne\"}}" ).
- En cas d'échec, le message d'erreur est correctement formaté en JSON ( {"Error":{"libelle":"Id inconnu"}} ).

3. Message "métier" construit en JSON par le programme RPGLE mais sans message d'erreur de retour (pour l'exemple puisque nous souhaitons avoir ce message d'erreur)
Dans IWS, nous définissons le message "métier" de retour (Returned output media types) en "application/json" (impossible à paramétrer dans le second cas car uniquement pour un seul message de retour)
Et en En cas de succès, le message "métier" de retour est correctement formaté.

Est-il possible de gérer les null en retour dans le cas 1 ?
Sinon, est-il possible de retourner les deux messages en JSON dans le cas 2 (paramétrage d'IWS) ?

Merci pour votre aide.

Répondre