---
title: "Gestion des erreurs HTTP dans les mappages de données des services web"
date: "2019-06-19"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "http-testing"
  - "mapforce"
  - "mapforce-server"
  - "web-services"
description: Découvrez comment gérer les erreurs HTTP dans les mappages de données des services web à l'aide de MapForce, afin d'assurer une intégration de données robuste et un reporting précis des erreurs dans les projets automatisés.
---
Status: #blog

Tags:  #data-mapping #flowforce-server #http-testing #mapforce #mapforce-server #web-services

Categories: [data-integration](/blog/fr/category/data-integration.md) | [development](/blog/fr/category/development.md)
# Gestion des erreurs HTTP dans les mappages de données des services web

Les projets d'intégration de données qui incluent des informations provenant de services Web externes peuvent être vulnérables aux erreurs HTTP lors de la récupération de données distantes. Lorsque les processus de mappage de données sont exécutés de manière automatisée, il est particulièrement important de détecter et de signaler les erreurs, même si ces erreurs ne se produisent que très rarement.

Une transformation de données MapForce peut inclure des appels à des services web et peut renvoyer le résultat directement vers un fichier ou une base de données, ou bien l'intégrer à d'autres données pour un traitement ultérieur. Quel que soit le résultat final, une erreur HTTP rencontrée lors d'une requête à un service web REST met en péril la transformation.

MapForce intègre des fonctionnalités pour gérer les erreurs HTTP au lieu de simplement interrompre l'exécution d'une transformation. Les développeurs peuvent configurer le corps d'un appel à un service web REST pour gérer et signaler les exceptions en fonction du code de statut HTTP renvoyé.

Examinons un exemple.

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

Les données de correspondance d'échantillon installées avec MapForce incluent une correspondance réelle pour un service web REST appelée AirportStatus.mfd. Cette correspondance appelle un service web proposé par l'Administration fédérale de l'aviation américaine, qui fournit des informations sur les retards de fonctionnement dans les principaux aéroports des États-Unis. L'entrée de la correspondance est un code d'aéroport de trois lettres, qui est transmis au service web, et le résultat est renvoyé sous forme de fichier JSON. La correspondance et un exemple de résultat sont présentés ci-dessous.

[![Cartographie des données des services web sans gestion des erreurs HTTP](/blog/images/airport-status-mapping.png)](airport-status-mapping.png)

[![Fichier JSON généré à partir de l'exemple de mappage](/blog/images/mapping-result.png)](mapping-result.png)

En cas d'erreur HTTP, l'exécution de la transformation échouerait.

Le fichier d'aide de MapForce contient une explication sur la gestion conditionnelle de la réponse d'un service web REST. Nous pourrions simplement copier la partie relative à la gestion des erreurs HTTP et la coller sur la transformation existante, mais nous n'aurions aucun moyen de valider le résultat en cas d'erreur HTTP. Nous ne pouvons pas forcer le service web de la FAA à générer une erreur HTTP à des fins de test !

Au lieu de cela, nous pouvons utiliser le service Web httpstat.us pour générer divers codes de statut HTTP et leurs descriptions, ce qui est utile pour les tests dans une configuration de mappage de données distincte. Par exemple, l'URL [https://httpstat.us/200](https://httpstat.us/200) affichée dans un navigateur renvoie "200 OK". L'URL [https://httpstat.us/400](https://httpstat.us/400) renvoie "400 Bad Request", et ainsi de suite pour tous les codes de statut définis, jusqu'à 524.

Nous pouvons implémenter une requête REST pour ce service dans MapForce en ouvrant simplement un nouveau fichier de mappage et en cliquant sur le bouton "Insérer un service web" dans la barre d'outils :

![Intégrer une fonction de service web dans une correspondance de données](/blog/images/insert-web-service-function.png)

Cela ouvre la fenêtre de dialogue "Paramètres de l'appel du service web", où nous pouvons configurer manuellement les paramètres. Nous utiliserons un paramètre à la place de tout code de statut spécifique, afin de pouvoir facilement tester différentes valeurs.

[![Configuration des paramètres de l'appel au service web](/blog/images/web-service-call-settings.png)](web-service-call-settings.png)

Voici la correspondance permettant de fournir le paramètre de code :

[![Service web avec un paramètre d'entrée dans la correspondance des données](/blog/images/mapping-1.png)](mapping-1.png)

Par défaut, une fonction de service web ne prend en charge que les codes de réponse HTTP standard compris entre 200 et 299. Nous pouvons ajouter la prise en charge d'autres codes en cliquant avec le bouton droit sur l'élément "Corps" dans la section "Réponse", afin d'ouvrir la boîte de dialogue "Structure de la réponse" et d'étendre la plage des codes de statut acceptés :

[![Gestion des erreurs HTTP en étendant la plage des codes de statut pris en charge](/blog/images/response-structure.png)](response-structure.png)

Nous pouvons associer le résultat de la requête REST à un simple fichier texte, en utilisant la fonction `decode-mime-entity`. Le service web ne fournit pas la valeur de l'encodage de caractères dans l'en-tête de la réponse, nous allons donc associer la valeur constante "utf-8" à la fonction de décodage.

[![Gestion des erreurs HTTP en associant la réponse à un message enregistré sous forme de texte](/blog/images/mapping-2.png)](mapping-2.png)

Maintenant, nous pouvons utiliser le bouton "Sortie" situé en bas de la fenêtre de mappage de MapForce pour exécuter le mappage et examiner le résultat :

![Premier résultat du test du message de cartographie](/blog/images/result-1.png)

 Nous pouvons modifier la constante d'entrée dans le panneau de mappage et relancer l'opération pour observer les différences :

![Deuxième résultat du test du message de cartographie](/blog/images/result-2.png)

Nous pouvons utiliser une fonction de concaténation pour combiner le résultat avec d'autres informations, afin de créer un message d'état plus convivial pour l'utilisateur

[![Définition d'un résultat de message plus complet](/blog/images/elaborate-message.png)](elaborate-message.png)

![Un message de cartographie plus convivial](/blog/images/result-3.png)

Une fois que nous aurons testé la configuration avec une variété de codes de statut HTTP possibles et que nous serons satisfaits des résultats, nous pourrons ajouter la gestion des erreurs HTTP à la configuration existante de AirportStatus.mfd en utilisant une opération de copier-coller. Tout d'abord, nous allons créer un nouveau corps de réponse dans la configuration de AirportStatus pour gérer les codes de réponse qui dépassent la plage normale. Pour cela, nous pouvons faire un clic droit sur l'élément "Corps" du côté "Réponse" du service web et ajouter un nouveau nœud "Corps".

![Gestion des erreurs HTTP avec un corps de réponse distinct](/blog/images/add-body-node.png)

Cela ajoute le nouveau corps de la réponse et ouvre la boîte de dialogue "Structure de la réponse", où nous allons spécifier le traitement à appliquer à tout code de statut HTTP supérieur à 299 :

![Gestion des erreurs HTTP en spécifiant la plage de codes de statut](/blog/images/response-structure-2.png)

Maintenant, nous pouvons copier les composants de mappage de notre définition de gestion des erreurs à partir du mappage de test, les coller dans le mappage AirportStatus, et connecter le nouveau corps de la réponse :

[![Gestion des erreurs HTTP dans une application web REST pour la correspondance de données](/blog/images/copy-error-handling.png)](copy-error-handling.png)

La configuration est maintenant définie avec plusieurs sorties. Lors de l'exécution manuelle directement dans MapForce, l'utilisateur choisit une sortie parmi les différentes options. La valeur du chemin d'exécution pour la gestion des erreurs HTTP devient claire lorsque la configuration est destinée à être exécutée de manière automatisée par [MapForce Server](https://www.altova.com/fr/mapforce-server) ou dans une tâche planifiée par [FlowForce Server](https://www.altova.com/fr/flowforceserver). Par exemple, une configuration de mappage de données automatisée pourrait signaler l'état de 50 aéroports différents toutes les trente minutes.

Pendant l'exécution automatisée, tous les chemins de sortie de la correspondance des données sont traités. Pour garantir que le service web est appelé une seule fois pour chaque entrée, un composant intermédiaire interceptera le résultat du service web avant de le mapper vers la cible finale. En cas d'erreur HTTP, la date, l'heure et le code de statut HTTP exact seront enregistrés.

La gestion des erreurs HTTP dans une application de mappage de données pour les services web REST est comme une ceinture de sécurité ou un extincteur : c'est quelque chose de très utile à avoir, mais on espère ne jamais avoir à l'utiliser !

Si vous débutez avec MapForce, consultez cette [présentation vidéo](https://youtu.be/a83na6G9FjI) pour une introduction. Vous pouvez essayer MapForce vous-même grâce à une [version d'essai gratuite de 30 jours](https://www.altova.com/fr/mapforce/download).
