Omgaan met HTTP-fouten tijdens geautomatiseerde data-integratie

Data-analisten en andere professionals hebben vaak de behoefte om real-time data te genereren door middel van geautomatiseerde processen die data omzetten, webdiensten aanroepen en de resultaten opslaan. Tijdens deze geautomatiseerde processen is het belangrijk om eventuele onverwachte HTTP-fouten op een beheersbare manier af te handelen, in plaats van de integratietaak abrupt te beëindigen.

In een eerdere post hebben we besproken hoe je voorwaardelijke verwerking van een antwoord van een REST-webdienst kunt gebruiken om HTTP-fouten af te handelen, waarbij afzonderlijke uitvoerbestanden werden gegenereerd voor een normaal antwoord en een fout. Laten we nu kijken naar een herziene mapping-oplossing voor het voorbeeld van de luchthavenstatus, om één mapping-resultaatbestand te genereren dat ofwel de gevraagde luchthavenstatus bevat, ofwel een beschrijving van de fout.

Een strategie om één resultaat te genereren zou kunnen zijn om elk uitvoerbestand dat in onze eerdere MapForce-mapping is gemaakt, te beschouwen als een tussenliggend onderdeel, en deze vervolgens te mappen naar een definitief resultaat dat beide mogelijke uitkomsten omvat.

Een eenvoudigere oplossing is om een normale reactie en een foutmelding direct toe te wijzen aan één outputcomponent.

Na het publiceren van onze eerdere post hebben we ontdekt dat de webdienst voor de status van luchthavens van de FAA een foutmelding retourneert als het verzoek een leeg veld bevat voor de luchthavencode. Dit resulteert in een HTTP 404-fout. Helaas wordt het resultaat van de webdienst bij een foutmelding in HTML-formaat geleverd, in plaats van in JSON-formaat, ondanks de specificatie in de requestheader

We kunnen het analyseren van HTML-foutmeldingen vermijden door direct gebruik te maken van de statuscode die in de reactie wordt geretourneerd:

Allereerst moeten we een item toevoegen aan het JSON-schema voor het betreffende component om een bericht op te slaan in geval van een fout. Dit kan eenvoudig worden gedaan met behulp van de grafische JSON-schema-editor van XMLSpy:

In het hulpvenster "Details" is "Voorkomen" ingesteld op "Optioneel", omdat we dit item alleen genereren in geval van een HTTP-fout.

Nu kunnen we een aangepaste foutmelding genereren op basis van elke HTTP-statuscode die hoger is dan 200:

De functie "concat" hierboven voegt de statuscode en de luchthavencode samen om een volledige uitleg van eventuele fouten te geven.

Hieronder een overzicht van de bijgewerkte mapping, die het pad van de statuscode naar het uitvoercomponent weergeeft:

We kunnen de constante voor de luchthavencode bovenaan links in de kaart aanpassen, en vervolgens op de knop "Output" onderaan het hoofdvenster van de kaart klikken om verschillende invoerwaarden te testen. Wanneer een geldige luchthavencode is opgenomen in de GET-verzoek naar de webservice, is het resultaat het JSON-bestand dat we verwachten:

We kunnen een HTTP-fout genereren door een lege string in te voegen in de constante voor de luchthavencode. Dit genereert een foutmelding in JSON-formaat:

Let op dat onze mapping nog steeds aparte response-inhoud definieert voor HTTP-statuscodes 200-299 en voor codes 300-599. Dit zorgt ervoor dat alleen geldige JSON-resultaten worden omgezet voor de uitvoer. Foutmeldingen die in HTML-formaat worden ontvangen, worden niet omgezet. Ze worden simpelweg genegeerd.

Automatiseer de datamapping en verwerk HTTP-fouten

In een eerdere publicatie beschreven we een automatiseringsscenario waarin we de status van 50 luchthavens regelmatig willen controleren en registreren. Om dit te bereiken, moeten we de webservice aanroepen en de resultaten voor elke individuele luchthavencode verwerken.

De oorspronkelijke voorbeeldmapping is al ontworpen met automatisering in gedachten. MapForce Server is een platformonafhankelijk serverprogramma dat de uitvoering van datamappings automatiseert, die zijn ontworpen in MapForce. Het component linksboven in de mapping, na de stringconstante, is een invoerparameter die tijdens de uitvoering door MapForce Server kan worden aangeleverd.

De string 'PHX' in de screenshot wordt alleen gebruikt tijdens de directe uitvoering in MapForce.

FlowForce Server is een zeer aanpasbare workflow-engine voor de efficiënte automatisering van data-integratietaken op bedrijfsniveau. Een FlowForce Server-taak kan de mapping uitvoeren met behulp van MapForce Server één keer voor elke benodigde luchthavencode en dit vervolgens periodiek herhalen. De geautomatiseerde taak behandelt HTTP-fouten door resultaatbestanden te genereren die ofwel de meest recente status bevatten, of een beschrijving van de fout voor elke luchthavencode.

Als u nieuw bent met MapForce, bekijk dan deze video-overzicht voor een introductie tot de mogelijkheden van MapForce voor data-conversie en -integratie, ongeacht het formaat. U kunt MapForce, MapForce Server en FlowForce Server zelf uitproberen met een gratis proefperiode van 30 dagen.