Het verwerken van de Groupon API met Altova MapForce
We denken er vaak over na dat een project voor data-integratie een vertaling is van één enkel data-invoerbestand naar een andere dataset, maar Altova MapForce stelt u in staat om het concept van een invoerbestand aanzienlijk uit te breiden. Zo illustreert het voorbeeld "MergeMultipleFiles.mfd" dat bij MapForce wordt geïnstalleerd, hoe u een bestandsnaam met wildcard-tekens kunt gebruiken om meerdere invoerbestanden samen te voegen tot één uitvoerbestand.
![]()
Een MapForce-mapping kan niet eens een fysiek bestand zijn; het kan een URL zijn die voorspelbare, gestructureerde gegevens teruggeeft, zoals de API's van populaire websites zoals Groupon en vele andere. In dit blogbericht beschrijven we hoe u Altova-tools kunt gebruiken om gegevens op te halen, te filteren, te analyseren en weer te geven die beschikbaar zijn via een webgebaseerde API, waarbij Groupon als voorbeeld wordt gebruikt. Als u dit zelf wilt uitproberen, moet u eerst http://www.groupon.com/pages/api bezoeken om uw persoonlijke Groupon API-client sleutel aan te vragen.
Het probleem: Alle aanbiedingen zijn lokaal geldig
De Groupon-website en e-mailabonnementen zijn ideaal om aanbiedingen in uw buurt te vinden, maar wat als u op zoek bent naar een aanbieding voor een aankomende vakantie, of als cadeau voor vrienden of familie in een andere regio? U zou natuurlijk elke locatie handmatig kunnen invoeren op de Groupon-website, maar dat is toch alweer een beetje ouderwets. Laten we de Altova MissionKit gebruiken om dit te automatiseren. De Groupon API biedt twee URL-query's die data retourneren in .json- of .xml-formaten: de eerste retourneert een lijst van alle Groupon-locaties (genaamd divisies), en de tweede retourneert actuele aanbiedingsinformatie voor één specifieke divisie. Als we alle aanbiedingen voor meer dan één divisie willen bekijken, moeten we meerdere URL's aanroepen en de data samenvoegen tot één resultaat. Ja, MapForce kan dat!
Eerst hebben we een schema nodig
De API-documentatie van Groupon beschrijft de elementen die door onze verzoeken worden geretourneerd, maar bevat geen XML-schema. Dat is geen probleem, we kunnen MapForce gebruiken om er een te genereren. We hoeven alleen maar een nieuw mapping-ontwerp te openen en "XML-schema/bestand invoegen" te kiezen, en vervolgens op de knop "Schakel over naar URL" te klikken. Nu kunnen we de URL invoeren om de lijst met Groupon-onderdelen op te halen:
![]()
Wanneer we op de knop "Openen" klikken, biedt MapForce aan om het schema te genereren
![]()
Wanneer we op "Ja" klikken, opent het dialoogvenster "Bestand / Opslaan". Ik heb het schema opgeslagen als "divisions.xsd", en de koppeling met het nieuwe XML-schema ziet er als volgt uit:
![]()
En het dialoogvenster "Eigenschappen" voor het XML-schema-onderdeel bevat automatisch de API-/divisie-URL als het "Invoer-XML-bestand":
![]()
Controleer het werk
We willen de gegevens van de Groupon-divisies filteren om een lijst met ID-namen te maken die we kunnen gebruiken voor zoekopdrachten naar aanbiedingen voor elke locatie. Maar voordat we verder gaan, is dit misschien een goed moment om de truc met het tekstbestand uit het blogartikel "Snelle oplossing voor complexe functies" toe te passen om de ID-waarden te bekijken. Wanneer we het tekstbestand invoegen en de divisies en ID-schema-elementen verbinden, ziet de mapping er als volgt uit:
![]()
We hebben het scheidingsteken gekoppeld aan de rijen in het tekstbestand, zodat voor elke unieke scheiding een nieuwe rij in het tekstbestand wordt gegenereerd. Hierdoor bevat het veld "Field1" in elke rij de bijbehorende ID. Door nu op de knop "Output" te klikken, wordt het volgende resultaat gegenereerd:
![]()
We hoeven alleen maar de functie `concat string toe te passen om de lijst met "/deal"-URL's voor alle divisie-ID's te genereren. De volgende stap in de mapping ziet er als volgt uit:
![]()
Door met de cursor over de constante te bewegen die verbonden is met de waarde1 van de functie "concat", wordt de volledige definitie van die constante weergegeven:
![]()
Wanneer we op de knop "Uitvoer" klikken om de mapping uit te voeren, ziet het uitvoerbestand er nu als volgt uit:
![]()
Als aanvulling kunnen we het gegenereerde XML-schema openen in XMLSpy en het in de grafische schemaweergave weergeven:
![]()
Tot nu toe hebben we:
- Een MapForce-mapping is gemaakt die de Groupon API raadpleegt om informatie op te halen voor alle divisies
- de velden met de divisie-ID's zijn geëxtraheerd
- en een lijst met URL's opgebouwd voor API-verzoeken om de aanbiedingen in elke divisie op te halen
In de volgende post in deze serie zullen we de lijst met zoekopdrachten verwerken als invoer voor een nieuwe mappingcomponent en de uitvoer filteren om interessante informatie te verkrijgen. Ontdek zelf hoe eenvoudig het is om MapForce te gebruiken om gegevens van een web-API om te zetten!
Download een gratis proefversie van 30 dagen van MapForce.
Redactienota: Onze oorspronkelijke serie over het verwerken van data van de Groupon API bestond uit drie delen. U kunt deze bekijken door op de links hieronder te klikken: Deel 1, "Het verwerken van de Groupon API met Altova MapForce", beschrijft hoe u dynamische invoer kunt creëren door data te verzamelen van meerdere URL's. Deel 2, "Het verwerken van de Groupon API met MapForce – Deel 2", beschrijft hoe we data uit de API hebben gefilterd en de uitvoer hebben gedefinieerd om alleen de meest interessante details te extraheren. Deel 3, "Het verwerken van de Groupon API – Deel 3", beschrijft hoe we de uitvoer hebben opgemaakt als een enkel HTML-document, geoptimaliseerd voor desktop- en mobiele apparaten, en bespreekt manieren om de herhaalde uitvoering te automatiseren.