Przetwarzanie API Groupon za pomocą MapForce – Część 2

W części 1 tej serii opisaliśmy, jak połączyć Altova MapForce z API firmy Groupon. Zapytaliśmy API o listę podziałów firmy Groupon, a następnie wykorzystaliśmy tę listę do tworzenia zapytań API dla wszystkich aktualnych ofert z każdego podziału. W tej części wykonamy zapytania do endpointu "/deals" i przefiltrujemy wyniki, aby uzyskać najbardziej interesujące dane. Lista zapytań do endpointu "/deals", którą utworzyliśmy wcześniej, wygląda następująco:

Aby przetworzyć wszystkie zapytania, możemy połączyć listę jako dynamiczny plik wejściowy do nowego komponentu mapowania. Ostatnio, gdy potrzebowaliśmy nowego komponentu, umieściliśmy zapytanie API / podziały w komponencie mapowania i pozwoliliśmy MapForce automatycznie utworzyć schemat XML. Możemy zrobić to samo tutaj, umieszczając zapytanie API / oferty jako plik XML. Istnieje jednak jeden drobny problem – chociaż dokumentacja API Groupon online jasno opisuje zapytania, które możemy wysłać, jest niejasna co do informacji, które zostaną zwrócone. Zanim wyślemy dziesiątki zapytań do API w celu uzyskania danych o wszystkich aktualnych ofertach, prawdopodobnie chcielibyśmy dowiedzieć się więcej o danych, które zostaną zwrócone.

Propozycja, której nie można odrzucić

Jak powiedział Yogi Berra, można wiele się dowiedzieć, po prostu obserwując. Zacznijmy od wykonania zapytania /deals w programie XMLSpy. Dzięki temu będziemy mogli przeanalizować odpowiedź na zapytanie dla jednego działu, zanim pobierzemy potencjalnie dużą ilość danych. Menu Plik / Otwórz w programie XMLSpy zawiera tę samą opcję "Przełącz na adres URL", której używaliśmy wcześniej w programie MapForce. Jeśli wprowadzimy zapytanie API /deals dla działu obejmującego duży obszar metropolitalny – powiedzmy Dallas – prawdopodobnie otrzymamy wystarczającą liczbę rekordów, aby określić charakterystykę całego zbioru danych. XMLSpy otwiera odpowiedź na zapytanie API /deals w trybie tekstowym, tak jakbyśmy otwierali lokalny plik:

Jak przewidywaliśmy, otrzymaliśmy dużą ilość danych, gdy poprosiliśmy o wszystkie transakcje dla jednego działu! Szybkim sposobem na analizę struktury tych danych jest użycie opcji menu XMLSpy DTD/Schema do wygenerowania pliku .xsd na podstawie danych XML. Poniżej przedstawiono skrócony widok całego wygenerowanego pliku .xsd, oparty na odpowiedzi na zapytanie /deals dla Dallas:

Możemy zagłębić się jeszcze bardziej, kierując się radą Yogiego, jakbyśmy przeżywali to wszystko po raz kolejny. Dokładne przeanalizowanie wszystkich elementów schematu XML ujawnia pewne ciekawe nieprawidłowości. Na przykład, istnieją dwa elementy o nazwie "redemptionLocation" z różnymi definicjami. Pierwszy z nich zawiera sekwencję elementów potomnych:

A drugim jest prosty ciąg znaków:

Po ponownym przeanalizowaniu danych XML dotyczących Dallas i wyszukaniu informacji o lokalizacji punktu wymiany, wyświetlane są następujące przykłady:

A:

A:

To jest naprawdę interesujące, ponieważ parametr redemptionLocation = "online" identyfikuje oferty, które można zrealizować z dowolnego miejsca, a nie tylko poprzez wizytę w fizycznym punkcie sprzedaży w regionie, w którym są reklamowane. Co by się stało, gdybyśmy wykonali zapytania do API /deals dla wszystkich regionów i wygenerowali listę wszystkich ofert dostępnych online? To byłaby ekstremalna wersja Groupon!

Proś tylko o to, czego potrzebujesz Zapytanie do API /deals obsługuje opcjonalny parametr o nazwie &show=, który pozwala użytkownikom ograniczyć ilość zwracanych danych. Użycie tego parametru może zaoszczędzić przepustowość i skrócić czas przetwarzania danych poprzez usunięcie niepotrzebnych danych z odpowiedzi API. Możemy również uprościć nasz wynik, uwzględniając tylko najbardziej interesujące informacje, w tym link do strony internetowej Groupon dla każdej oferty. Po usunięciu niepotrzebnych elementów z wygenerowanego schematu dla Dallas, nasza ostateczna wersja podsumowania ofert dostępnych online wygląda następująco:

Kiedy dodamy parametr "&show=" do naszego mapowania w MapForce, aby zażądać tylko elementów zawartych w uproszczonym schemacie XML, zapytania będą wyglądać następująco:

Teraz możemy umieścić zaktualizowany plik .xsd w konfiguracji mapowania i połączyć listę zapytań API/oferty jako dynamiczne dane wejściowe. Nie musimy usuwać pliku tekstowego, którego używaliśmy do zbierania listy zapytań – może on nadal być przydatny do przyszłego debugowania.

Te zmiany finalizują proces mapowania danych po stronie wejściowej.

Definiowanie wyniku transformacji danych

W programie XMLSpy możemy wprowadzić kilka dodatkowych modyfikacji do schematu XML, który jest używany jako dane wejściowe, aby zaprojektować nową wersję, która będzie używana jako dane wyjściowe

Usunęliśmy element "response" (odpowiedź), ponieważ nie wnosi on żadnej wartości, oraz element "redemptionLocation" (lokacja realizacji), który nie jest przeznaczony do uwzględnienia w wynikach. Dodaliśmy również element daty, który będzie zawierał znacznik czasu, ponieważ nasz plik wynikowy będzie przedstawiał migawkę danych, które ciągle się zmieniają.

Po zapisaniu tej wersji pliku .xsd w programie XMLSpy, możemy go wstawić do mapowania w programie MapForce. Poniżej znajduje się strona wynikowa mapowania, z częściowo połączonym komponentem wynikowym. Filtr na górze odczytuje element "redemptionLocation", aby wybrać tylko oferty dostępne online, a funkcja "now" wstawia aktualną datę

Ostatnia modyfikacja, którą wprowadziliśmy w schemacie XML wyjściowym, polegała na zmianie typu kilku elementów z typu dateTime, Boolean i integer na typ string, aby umożliwić użycie bardziej opisowego tekstu. Poniżej znajduje się pełna definicja mapowania wraz z ostatecznymi połączeniami z komponentem wyjściowym:

A teraz przejdźmy do sedna sprawy

Po kliknięciu przycisku "Wyjście", MapForce przetwarza całą transformację danych od początku do końca, wykorzystując wbudowany silnik przetwarzania. Poniżej przedstawiono szczegółowy opis kroków:

  • Uruchom zapytanie "/divisions", aby uzyskać aktualną listę działów
  • Połącz ze sobą ciągi znaków, aby utworzyć listę zapytań dotyczących ofert dla wszystkich działów
  • Uruchom zapytania /deals, aby wygenerować dynamiczne dane dla komponentu wejściowego
  • Filtruj oferty dostępne online, aby wygenerować komponent wyjściowy, wykonaj pozostałe funkcje mapowania i dodaj znacznik czasu po przetworzeniu wszystkich ofert

MapForce wykonuje wszystkie te kroki w ciągu zaledwie kilku sekund i generuje plik wynikowy zawierający szereg transakcji, które wyglądają następująco:

W trzeciej części tego cyklu zaprojektujemy arkusz stylów, który automatycznie przekształci dane XML generowane przez nasze narzędzie mapowania na format HTML, co umożliwi atrakcyjną prezentację w przeglądarce internetowej oraz na urządzeniach mobilnych. Do zobaczenia na stadionie, Yogi!

XMLSpy i MapForce są dostępne razem w specjalnie wycenionym pakiecie Altova MissionKit. Sprawdź sam, jak łatwo jest użyć MissionKit do konwersji danych z interfejsu API – pobierz bezpłatną 30-dniową wersję próbną!

Uwaga redakcji: Nasza oryginalna seria artykułów na temat mapowania danych z API Groupon składała się z trzech części, do których można sięgnąć, klikając poniższe linki: Część 1, zatytułowana "Przetwarzanie API Groupon za pomocą Altova MapForce", opisuje, jak tworzyć dynamiczne źródła danych, pobierając informacje z wielu adresów URL. Przetwarzanie API Groupon za pomocą MapForce – Część 2 wyjaśnia, jak filtrowaliśmy dane z API i definiowaliśmy wynik, aby wydobyć tylko najbardziej interesujące szczegóły. Przetwarzanie API Groupon – Część 3 opisuje formatowanie wyniku jako pojedynczego dokumentu HTML, zoptymalizowanego dla urządzeń stacjonarnych i mobilnych, oraz omawia sposoby automatyzacji powtarzalnego wykonywania.