---
title: "Omgaan met HTTP-fouten in datamappingen voor webdiensten"
date: "2019-06-19"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "http-testing"
  - "mapforce"
  - "mapforce-server"
  - "web-services"
description: Ontdek hoe u HTTP-fouten kunt verwerken bij het mappen van gegevens in web services met behulp van MapForce, zodat u een betrouwbare data-integratie en foutrapportage kunt realiseren in geautomatiseerde projecten.
---
Status: #blog

Tags:  #data-mapping #flowforce-server #http-testing #mapforce #mapforce-server #web-services

Categories: [data-integration](/blog/nl/category/data-integration.md) | [development](/blog/nl/category/development.md)
# Omgaan met HTTP-fouten in datamappingen voor webdiensten

Projecten voor data-integratie die informatie uit externe webdiensten gebruiken, kunnen kwetsbaar zijn voor HTTP-fouten bij het ophalen van gegevens van externe bronnen. Wanneer datamappingen automatisch worden uitgevoerd, is het vooral belangrijk om fouten te detecteren en te melden, zelfs als deze fouten slechts zeer zelden voorkomen.

Een MapForce datamapping kan web service aanroepen bevatten en het resultaat direct naar een bestand of database schrijven, of het combineren met andere invoer voor verdere verwerking. Ongeacht de uiteindelijke output, kan een HTTP web service fout die optreedt tijdens een REST web service aanvraag de mapping in gevaar brengen.

MapForce bevat functies voor het afhandelen van HTTP-fouten, in plaats van de uitvoering van een mapping simpelweg te onderbreken. Ontwikkelaars kunnen de inhoud van een REST-webservice-aanroep configureren om uitzonderingen te verwerken en te rapporteren op basis van de HTTP-statuscode die wordt geretourneerd.

Laten we eens een voorbeeld bekijken.

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

De meegeleverde voorbeeldgegevenskoppelingen in MapForce bevatten een praktische koppeling voor een REST-webdienst, genaamd AirportStatus.mfd. Deze koppeling roept een webdienst aan die wordt gesponsord door de Federal Aviation Administration en die informatie verstrekt over operationele vertragingen op grote Amerikaanse luchthavens. De invoer van de koppeling is een luchthavencode bestaande uit drie letters, die aan de webdienst wordt verstrekt, en het resultaat wordt geretourneerd als een JSON-bestand. De koppeling en een voorbeeldresultaat worden hieronder weergegeven.

[![Data-mapping voor webdiensten, zonder voorzieningen voor het afhandelen van HTTP-fouten](/blog/images/airport-status-mapping.png)](airport-status-mapping.png)

[![JSON-bestand als uitvoer van het voorbeeldmapping](/blog/images/mapping-result.png)](mapping-result.png)

In geval van een HTTP-fout, zou de uitvoering van de mapping mislukken.

De helpbestanden van MapForce bevatten een uitleg over de voorwaardelijke verwerking van een antwoord van een REST-webdienst. We zouden het gedeelte voor het afhandelen van HTTP-fouten eenvoudigweg kunnen toevoegen aan de bestaande mapping, maar we zouden geen manier hebben om het resultaat te valideren in geval van een HTTP-fout. We kunnen de FAA-webdienst niet dwingen om een HTTP-fout te genereren voor testdoeleinden!

In plaats daarvan kunnen we de webservice op httpstat.us gebruiken om verschillende HTTP-statuscodes en beschrijvingen te genereren voor het testen in een aparte datamapping. Bijvoorbeeld, de URL [https://httpstat.us/200](https://httpstat.us/200) in een webbrowser geeft "200 OK" weer. De URL [https://httpstat.us/400](https://httpstat.us/400) geeft "400 Bad Request" weer, en zo verder voor alle gedefinieerde statuscodes tot 524.

We kunnen een REST-verzoek voor deze service implementeren in MapForce door simpelweg een nieuw mappingbestand te openen en op de knop "Webservice toevoegen" in de werkbalk te klikken:

![Het integreren van een webservicefunctie in een datamapping](/blog/images/insert-web-service-function.png)

Dit opent het dialoogvenster "Instellingen voor webservice-aanroepen", waar we de instellingen handmatig kunnen configureren. We gebruiken een parameter in plaats van een specifieke statuscode, zodat we eenvoudig andere waarden kunnen testen.

[![Configuratie van de instellingen voor het aanroepen van de webservice](/blog/images/web-service-call-settings.png)](web-service-call-settings.png)

Hieronder staat de mapping met een constante om de codeparameter te leveren:

[![Webservice met een invoerparameter in de datamapping](/blog/images/mapping-1.png)](mapping-1.png)

Standaard ondersteunt een webservicefunctie alleen normale HTTP-antwoordcodes in het bereik van 200-299. We kunnen ondersteuning toevoegen voor andere codes door met de rechtermuisknop te klikken op het element "Body" in het antwoord, om het dialoogvenster "Antwoordstructuur" te openen, en het bereik van geaccepteerde statuscodes uit te breiden:

[![Het afhandelen van HTTP-fouten door het uitbreiden van het aantal ondersteunde statuscodes](/blog/images/response-structure.png)](response-structure.png)

We kunnen het resultaat van de REST-aanvraag koppelen aan een eenvoudig tekstbestand, met behulp van de functie `decode-mime-entity`. De webservice geeft de waarde van de tekenset niet op in de antwoordkop, dus we koppelen de constante waarde "utf-8" aan de decoderingfunctie.

[![Het afhandelen van HTTP-fouten door de reactie te koppelen aan een bericht dat als tekst is opgeslagen](/blog/images/mapping-2.png)](mapping-2.png)

Nu kunnen we de knop "Output" (uitvoer) onderaan het venster voor de mapping in MapForce gebruiken om de mapping uit te voeren en het resultaat te bekijken:

![Eerste testresultaat van het bericht voor de data-mapping](/blog/images/result-1.png)

 We kunnen de invoerwaarde in het configuratiepaneel wijzigen en opnieuw uitvoeren om het verschil te zien:

![Tweede testresultaat van het bericht voor de data-mapping](/blog/images/result-2.png)

We kunnen een "concat"-functie gebruiken om het resultaat te combineren met andere informatie, zodat we een gebruiksvriendelijkere statusmelding kunnen weergeven:

[![Definitie van een completer resultaat van een bericht](/blog/images/elaborate-message.png)](elaborate-message.png)

![Een gebruiksvriendelijkere berichtgeving over de locatie](/blog/images/result-3.png)

Zodra we de mapping hebben getest met een verscheidenheid aan mogelijke HTTP-statuscodes en we tevreden zijn met de resultaten, kunnen we HTTP-foutafhandeling toevoegen aan de bestaande AirportStatus.mfd-mapping via een kopieer-plakbewerking. Eerst maken we een nieuw antwoordgedeelte in de AirportStatus-mapping om antwoordcodes buiten het normale bereik te verwerken. We kunnen met de rechtermuisknop klikken op het item "Body" aan de kant van het antwoord van de webservice om een nieuwe "Body"-node toe te voegen.

![Het afhandelen van HTTP-fouten met een apart antwoordgedeelte](/blog/images/add-body-node.png)

Dit voegt het nieuwe onderdeel toe en opent het dialoogvenster "Antwoordstructuur", waar we de verwerking kunnen specificeren voor alle HTTP-statuscodes die hoger zijn dan 299:

![Het afhandelen van HTTP-foutmeldingen door het specificeren van een reeks statuscodes](/blog/images/response-structure-2.png)

Nu kunnen we de componenten die de mapping van onze foutafhandeling definiëren, kopiëren vanuit de testmapping, plakken in de mapping voor de AirportStatus, en de nieuwe "Response body" koppelen

[![Het afhandelen van HTTP-fouten in een REST-webdienst voor data-mapping](/blog/images/copy-error-handling.png)](copy-error-handling.png)

De mapping is nu gedefinieerd met meerdere uitvoeropties. Tijdens handmatige uitvoering, direct in MapForce, kan de gebruiker één van de uitvoeropties selecteren. De waarde van het uitvoerpad voor het afhandelen van HTTP-fouten wordt duidelijk wanneer de mapping bedoeld is voor automatische uitvoering door [MapForce Server](https://www.altova.com/nl/mapforce-server) of in een periodiek geplande taak van [FlowForce Server](https://www.altova.com/nl/flowforceserver). Bijvoorbeeld, een geautomatiseerde datamapping kan elke dertig minuten de status van 50 verschillende luchthavens rapporteren.

Tijdens de geautomatiseerde uitvoering worden alle datamappings en uitvoerpaden verwerkt. Om ervoor te zorgen dat de webservice slechts één keer per invoer wordt aangeroepen, vangt een tussenliggend component het resultaat van de webservice op voordat het wordt toegewezen aan de uiteindelijke bestemming. Indien er een HTTP-fout optreedt, worden de datum, tijd en de exacte HTTP-statuscode vastgelegd.

Het afhandelen van HTTP-fouten bij het mappen van gegevens in een REST-webdienst is vergelijkbaar met een veiligheidsgordel of een brandblusser: iets heel nuttigs om te hebben, maar je hoopt dat je het niet nodig zult hebben!

Als u nieuw bent met MapForce, bekijk dan deze [video-introductie](https://youtu.be/a83na6G9FjI) om een eerste kennismaking te krijgen. U kunt MapForce zelf uitproberen met een [gratis proefperiode van 30 dagen](https://www.altova.com/nl/mapforce/download).
