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.

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.


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 in een webbrowser geeft "200 OK" weer. De URL 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:

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.

Hieronder staat de mapping met een constante om de codeparameter te leveren:

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:

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.

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:

We kunnen de invoerwaarde in het configuratiepaneel wijzigen en opnieuw uitvoeren om het verschil te zien:

We kunnen een "concat"-functie gebruiken om het resultaat te combineren met andere informatie, zodat we een gebruiksvriendelijkere statusmelding kunnen weergeven:


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.

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:

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

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 of in een periodiek geplande taak van FlowForce Server. 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 om een eerste kennismaking te krijgen. U kunt MapForce zelf uitproberen met een gratis proefperiode van 30 dagen.