Verarbeitung der Groupon-API mit MapForce – Teil 2

In Teil 1 dieser Reihe haben wir beschrieben, wie man Altova MapForce mit der Groupon-API verbindet. Wir haben die API nach einer Liste der Groupon-Unterabteilungen abgefragt und diese Liste dann verwendet, um API-Anfragen für alle aktuellen Angebote aus jeder Unterabteilung zu erstellen. In diesem Teil werden wir die "/deals"-Anfragen ausführen und die Antwort filtern, um die interessantesten Daten zu erhalten. Die Liste der "/deals"-Anfragen, die wir zuvor erstellt haben, sieht wie folgt aus:

Um alle Anfragen zu verarbeiten, können wir die Liste als dynamische Datei in eine neue Mapping-Komponente einlesen. Als wir das letzte Mal eine neue Komponente benötigten, haben wir eine API-/Abteilung-Anfrage in das Mapping eingefügt und MapForce automatisch ein XML-Schema erstellen lassen. Wir könnten hier das Gleiche tun, indem wir eine API-/Angebots-Anfrage als XML-Eingabedatei einfügen. Es gibt jedoch ein kleines Problem: Obwohl die Online-Dokumentation der Groupon-API die Abfragen, die wir stellen können, klar beschreibt, ist sie vage, wenn es um die Informationen geht, die zurückgegeben werden. Bevor wir Dutzende von Anfragen an die API für alle aktuellen Angebote senden, möchten wir wahrscheinlich etwas mehr über die Daten wissen, die zurückkommen werden.

Lassen Sie uns einen Deal machen

Wie Yogi Berra sagte, kann man viel beobachten, indem man einfach nur schaut. Beginnen wir damit, eine Anfrage für "/deals" in XMLSpy auszuführen. Dadurch können wir die Antwort auf eine Anfrage für eine einzelne Abteilung prüfen, bevor wir eine potenziell große Datenmenge abrufen. Das Menü "Datei / Öffnen" in XMLSpy enthält die gleiche Option "Auf URL umschalten", die wir in MapForce im vorherigen Beitrag verwendet haben. Wenn wir die API-Anfrage "/deals" für eine Abteilung eingeben, die ein großes Ballungsgebiet abdeckt – beispielsweise Dallas –, erhalten wir wahrscheinlich genügend "deals"-Einträge, um die Eigenschaften des gesamten Datensatzes zu ermitteln. XMLSpy öffnet die Antwort auf die API-Anfrage "/deals" im Textmodus, genau wie wenn wir eine lokale Datei öffnen würden:

Wie erwartet, haben wir eine große Menge an Daten erhalten, als wir alle Transaktionen für eine einzelne Abteilung angefordert haben! Eine schnelle Möglichkeit, die Struktur dieser Daten zu analysieren, ist die Verwendung der Menüoption "XMLSpy DTD / Schema", um eine .xsd-Datei aus der XML-Datei zu generieren. Im Folgenden ist eine vereinfachte Darstellung der gesamten generierten .xsd-Datei dargestellt, basierend auf der Antwort auf die Anfrage "/deals" für Dallas:

Wir können noch tiefer eintauchen, indem wir Yogis Ratschlag befolgen, als ob wir das alles schon einmal gesehen hätten. Wenn wir alle Elemente des XML-Schemas genauer untersuchen, zeigen sich einige interessante Anomalien. Zum Beispiel gibt es zwei Elemente mit dem Namen "redemptionLocation", die jedoch unterschiedliche Definitionen haben. Das erste Element enthält eine Sequenz von Unterelementen:

Und das zweite Element wird als eine einfache Zeichenkette definiert:

Wenn man in den XML-Daten für Dallas nachsieht und nach dem Feld "redemptionLocation" sucht, werden folgende Beispiele angezeigt:

Und:

Und:

Das ist wirklich interessant, denn redemptionLocation = "online" identifiziert Angebote, die überall eingelöst werden können, anstatt dass man dafür eine Filiale des jeweiligen Unternehmens besuchen muss, wo das Angebot beworben wird. Was wäre, wenn wir die /deals-API-Abfragen für alle Bereiche durchführen und eine Liste aller Online-Angebote extrahieren würden? Das wäre eine extrem umfangreiche Groupon-Plattform!

Nur das Abfragen, was benötigt wird Die Groupon-/deals-API-Abfrage unterstützt einen optionalen Parameter namens &show=, mit dem Benutzer die zurückgegebenen Daten einschränken können. Durch die Verwendung dieses Parameters kann Bandbreite gespart und die Verarbeitungszeit für die Datenumwandlung reduziert werden, indem unerwünschte Daten aus der API-Antwort entfernt werden. Wir können auch unser Endergebnis vereinfachen, indem wir nur die interessantesten Informationen einbeziehen, einschließlich des Links zur Groupon-Webseite für jedes Angebot. Nachdem wir unerwünschte Elemente aus dem generierten Dallas-Schema entfernt haben, sieht unsere endgültige Version für die Zusammenfassung der Online-Angebote wie folgt aus:

Wenn wir den Parameter "&show=" zu unserer MapForce-Zuordnung hinzufügen, um nur die Elemente anzufordern, die im vereinfachten XML-Schema enthalten sind, sehen die Abfragen wie folgt aus:

Jetzt können wir die überarbeitete .xsd-Datei in die Zuordnung einfügen und die Liste der API-/Deal-Abfragen als dynamische Eingabe verbinden. Wir müssen die Textdatei, die wir zur Sammlung der Abfragen verwendet haben, nicht löschen – sie könnte in Zukunft noch für die Fehlersuche nützlich sein.

Diese Änderungen vervollständigen den Bereich der Dateneingabe im Datenmapping-Prozess.

Festlegung der Ausgabe der Datentransformation

Zurück in XMLSpy können wir noch einige weitere Anpassungen am Eingabe-XML-Schema vornehmen, um eine neue Version für die Ausgabe zu erstellen:

Wir haben das Antwortelement entfernt, da es keinen Mehrwert bietet, und das Element "RedemptionLocation" eliminiert, das wir nicht in der Ausgabe enthalten möchten. Außerdem haben wir ein Datumsfeld für einen Zeitstempel hinzugefügt, da unsere Ausgabedatei eine Momentaufnahme von Daten darstellen wird, die sich ständig ändern.

Nachdem wir diese Version der .xsd-Datei in XMLSpy gespeichert haben, können wir sie in die MapForce-Zuordnung einfügen. Im Folgenden ist die Ausgabeseite der Zuordnung dargestellt, wobei der Ausgabekomponente teilweise verbunden ist. Der Filter oben liest das Element "redemptionLocation", um nur Online-Angebote auszuwählen, und die Funktion "now" fügt das aktuelle Datum ein:

Die letzte Änderung, die wir am XML-Schema für die Ausgabe vorgenommen haben, bestand darin, einige Elementtypen von "dateTime", "Boolean" und "Integer" in den String-Datentyp zu ändern, um längere, beschreibende Texte zu ermöglichen. Hier ist die vollständige Definition der Zuordnung mit den endgültigen Verbindungen zum Ausgabekomponenten:

Jetzt kommt der entscheidende Punkt

Wenn wir auf die Schaltfläche "Ausgabe" klicken, verarbeitet MapForce die gesamte Transformation von Anfang bis Ende mithilfe der integrierten Ausführungskomponente von MapForce. Hier ist eine Aufschlüsselung der einzelnen Schritte:

  • Führen Sie die Abfrage "/divisions" aus, um die aktuelle Liste der Abteilungen abzurufen
  • Verketten Sie Zeichenketten, um die Liste der Suchanfragen für "/deals" für alle Abteilungen zu erstellen
  • Führen Sie die Abfragen unter /deals aus, um dynamische Daten für das Eingabefeld zu generieren
  • Filtern Sie die Online-Angebote, um das Ausgabekomponente zu erstellen, führen Sie die restlichen Zuordnungsfunktionen aus und fügen Sie den Zeitstempel hinzu, nachdem alle Angebote verarbeitet wurden

MapForce benötigt nur wenige Sekunden, um alle diese Schritte auszuführen und eine Ausgabedatei mit einer Reihe von Datensätzen zu erstellen, die wie folgt aussehen:

Im dritten Teil dieser Reihe werden wir ein Stylesheet entwerfen, das die XML-Ausgabe unserer Anwendung automatisch in HTML umwandelt, um eine ansprechende Darstellung in Webbrowsern und auf mobilen Geräten zu ermöglichen. Bis bald auf dem Baseballfeld, Yogi!

XMLSpy und MapForce sind zusammen im speziell preisgünstigen Altova MissionKit erhältlich. Überzeugen Sie sich selbst, wie einfach es ist, das MissionKit zu nutzen, um Daten von einer Web-API zu konvertieren – laden Sie eine kostenlose 30-Tage-Testversion herunter!

Anmerkung des Herausgebers: Unsere ursprüngliche Serie über die Verarbeitung von Daten aus der Groupon-API wurde in drei Teilen veröffentlicht. Sie können die einzelnen Teile über die folgenden Links einsehen: Teil 1, "Verarbeitung der Groupon-API mit Altova MapForce", beschreibt, wie man dynamische Eingaben erstellt, indem man Daten von mehreren URLs sammelt. Teil Verarbeitung der Groupon-API mit MapForce – Teil 2 beschreibt, wie wir Daten aus der API gefiltert und die Ausgabe definiert haben, um nur die interessantesten Details zu extrahieren. Teil Verarbeitung der Groupon-API – Teil 3 beschreibt, wie die Ausgabe als ein einzelnes HTML-Dokument formatiert wurde, das für Desktop- und mobile Geräte optimiert ist, und gibt einen Überblick über Möglichkeiten zur Automatisierung wiederholter Ausführungen.