Gérer la réponse HTTP de manière conditionnelle
Partons du principe qu'un service Web retourne un type de contenu soit JSON soit XML dans le corps de réponse, selon la valeur de l'en-tête de requête HTTP Accepter. De plus, en cas d'erreur (code de statut > 299), le service Web peut retourner un type de contenu indéfini. Dans ce type de cas, il peut s'avérer utile de gérer la réponse de manière conditionnelle sur la base du code de statut HTTP et du type de contenu.
Pour gérer la réponse JSON et XML depuis le service web dans le même mappage, vous pourriez créer plusieurs items de corps, en cliquant avec la touche de droite sur le composant et en sélectionnant Ajouter nœud de corps après depuis le menu contextuel.
Dans le mappage, un composant de service Web avec plusieurs items body configurés pour le scénario ci-dessus peut ressembler à l'exemple suivant :
Le mappage illustré ci-dessus prend deux paramètres d'entrée. Le premier paramètre fournit le type de contenu attendu et sa valeur peut être application/json, ou application/xml. Le second paramètre fournit l'ID numérique du produit à extraire.
Si vous fournissez la valeur application/json en tant que paramètre d'entrée, cliquer sur la touche Aperçu du composant cible JSON. Sinon, si la valeur de paramètre d'entrée est application/xml, cliquer sur la touche Aperçu
du composant cible XML. Le fichier de sortie respectif (JSON ou XML) sera généré si l'appel au service Web a réussi.
Si l'appel au service Web retourne un code de statut supérieur à 300 (erreur), la réponse HTTP atteint le troisième item body. Puisque nous ne connaissons pas le type de contenu exact, nous choisissons de le décoder à l'aide de la fonction decode-mime-entity. Le service Web ne fournit pas la valeur de set de caractère dans l'en-tête de réponse, ce qui explique pourquoi la valeur constante utf-8 est connectée à la fonction de décodage.
Chacun des trois items de corps de réponse contenus dans le composant ci-dessus sont configurables en cliquant sur la touche située à côté de chaque corps :
1.Le premier corps gère le contenu retourné en tant que application/json si le code de statut se trouve entre 200 et 299. De plus, le schéma de la structure de réponse JSON attendue est défini.
2.Le deuxième corps gère le contenu retourné en tant que application/xml si le code de statut se trouve entre 200 et 299. De plus, le schéma de la structure de réponse XML attendue est défini.
3.Le troisième corps gère le contenu retourné en tant que */* si le service Web retourne un code de statut erroné (entre 300 et 599).