Integration von Inhalten durch deklarative REST-Clients
Jan. 26, 2021
--
Declarative REST API for Multisource 656x400

Integration von Inhalten durch deklarative REST-Clients

Magnolia bietet Connector Packs zur einfachen Integration verschiedener Drittsysteme wie Commerce, Digital Asset Management (DAM) und Analytics-Plattformen. Für Integrationen, die über unsere Connector Packs hinausgehen, bieten wir Multisource an, eine äußerst nützliche Funktion, mit der Sie Magnolia mit jedem System integrieren können, das über eine REST-API verfügt. Multisource bietet auch ein UI-Framework für die Anzeige von Inhalten für Autoren in AdminCentral, wodurch die Herausforderung der Verwaltung von Silo-Inhalten überwunden wird.

Einrichten eines REST-Clients mit Multisource

Sie können Magnolia mit unserem einzigartigen Light Development anpassen. Es ermöglicht Ihnen, die Fähigkeiten von Magnolia durch YAML-Dateien zu erweitern, ohne eine einzige Zeile Java-Code zu schreiben. Mit jeder YAML-Konfigurationsdatei im Ordner restClients in Ihrem Light-Modul erstellen Sie einen deklarativen REST-Client.

Auf die gleiche Weise können Sie beliebige externe Inhaltsquellen in Magnolia konfigurieren und deren Inhalte auf Ihren Seiten und in Ihren Anwendungen verwenden. Weitere Informationen finden Sie in der Dokumentation.

Kompatible Inhaltsquellen

Standardmäßig verwenden unsere REST-Clients die RestEASY-Implementierung der Jakarta RESTful Web Services (JAX-RS), die eine große Anzahl von Inhaltsquellen unterstützt, die auf zwei Arten definiert werden können.

Der erste Definitionstyp verwendet die OpenAPI-Spezifikation. Die Konfiguration enthält die Java-Klasse und die URL, die die REST-API definiert. Dies ist die bevorzugte Methode, da die Definition kurz ist und nicht aktualisiert werden muss, wenn die Quelle ihren API-Vertrag ändert.

Java
  Klasse: info.magnolia.openapi.client.OpenApiRestClientDefinition schemaUrl: https://en.wikipedia.org/api/rest_v1/?spec  

Leider entsprechen einige Inhaltsquellen nicht der OpenAPI-Spezifikation, und Sie müssen jeden Aufruf einzeln definieren, einschließlich der Parameter, um das Ergebnis zu erhalten. Im folgenden Beispiel definieren wir einen REST-Client mit einem REST-Aufruf an die URL /posts.

Java
  baseUrl: https://jsonplaceholder.typicode.com restCalls: all: method: get entityClass: com.fasterxml.jackson.databind.JsonNode path: /posts  

Lesen Sie die Dokumentation, um mehr über die YAML-Konfiguration und die Authentifizierung zu erfahren.

Magnolia Multisource

With Multisource, Magnolia makes it fast and easy to connect to any external content or data source with just a few lines of configuration.

Tipps und Tricks

Testaufrufe für die REST-API

Ich empfehle die Verwendung von Tools, um sicherzustellen, dass die REST-API so funktioniert, wie Sie es erwarten. Das erste Tool, das ich empfehle, ist cUrl, ein CLI-Befehl zur Durchführung von REST-Aufrufen. Es ist sehr schnell und wird von vielen Entwicklern verwendet. HTTPie ist ähnlich, stellt die Ergebnisse aber besser dar. Das Erlernen dieser Tools erweitert Ihr Wissen über das HTTP-Protokoll und ist die Zeit wert.

Das dritte Tool, das ebenfalls weit verbreitet ist, ist Postman. Es handelt sich um eine grafische Schnittstelle für REST-Aufrufe. Es ist einfach zu bedienen und bietet die Möglichkeit, Konfigurationen zu speichern, damit Sie Tests erneut durchführen können, wenn sich die API ändert. Außerdem können Sie Konfigurationen mit Kollegen teilen.

REST-Aufrufe mit der Magnolia-App debuggen

Magnolia Multisource wird mit einem Tool zum Debuggen von Aufrufen einer REST-API geliefert. Die App in AdminCentral heißt "REST Client". Sie zeigt die in Ihrer Instanz definierten REST-Clients an und ermöglicht es Ihnen, REST-Aufrufe zu initiieren, um die Ergebnisse zu überprüfen. Bei Bedarf können Sie die Aufrufparameter ändern.

REST_Client_smaller

Auf der Registerkarte "Debug" können Sie einen REST-Client auswählen und seine Live-Aktivität überwachen, d. h. Sie müssen die App geöffnet lassen, während Sie die Aufrufe tätigen. Das Tool zeigt Details der Anfrage und der Antwort an. Debug ist auch nützlich, um zu prüfen, wie die Aufrufe erfolgen, um sie mit dem Befehl cUrl zu reproduzieren.

REST_Debug_smaller

Melden Sie sich bei unserer Demo-Instanz an, um die REST-Client-Schnittstelle in Aktion zu sehen.

Verwenden Sie den richtigen Antworttyp

Wenn Sie nicht die OpenAPI-Spezifikation verwenden, definieren Sie die Eigenschaft entityClass für jeden REST-Aufruf. Wenn Sie zum Beispiel auf dem Client arbeiten, möchten Sie das Ergebnis in java.lang.String konvertieren und Javascript das JSON-Objekt parsen lassen. Oder Sie möchten das Ergebnis einem POJO zuordnen, das Sie in Ihrer Anwendung definiert haben.

Wenn Sie den REST-Client mit UI-Komponenten verwenden, ist die EntityClass com.fasterxml.jackson.databind.JsonNode. Wenn Sie den Client direkt verwenden, können Sie eine andere EntityClass definieren, zum Beispiel Java-Listen, Strings oder Maps. Die Jackson-Bibliothek wird versuchen, die Antwort in die definierte EntityClass zu konvertieren.

Es kann auch nützlich sein, verschiedene REST-Aufrufe mit unterschiedlichen Antworttypen für verschiedene Zwecke zu haben.

Schlussfolgerung

Die meisten Unternehmen speichern Inhalte an verschiedenen Orten, was für Autoren und Front-End-Entwickler eine Herausforderung darstellt. Um verstreute Inhalte in Magnolia zu nutzen, macht Multisource die Integration von Drittanbieter-Inhaltsquellen viel einfacher.

Auch wenn Sie kein Java-Entwickler sind, können Sie Magnolias Light Development nutzen, um REST-Clients für APIs von Drittanbietern einzurichten und deren Inhalte über die AdminCentral UI in Ihren Seiten und Anwendungen zu verwenden. Wenn Sie die oben genannten Tipps befolgen, sollten Sie eine Integration im Handumdrehen konfigurieren können.

Über den autor

Jorge Franco

Senior Software Engineer, Magnolia

Jorge is a developer at Magnolia. He is always looking to improve code quality through testing and aims to reduce code complexity whenever possible. He sleeps much better when he has safely removed some lines of unnecessary code during the day.