APIs in Magento 1 und Magento 2 – REST vs. SOAP

APIs in Magento 1 und Magento 2 – REST vs. SOAP

von Stephan Kast, 12. Mai 2017

Wer sich schon einmal mehr mit REST und OAuth beschäftigt hat wird wissen, dass es jede menge Bibliotheken für verschiedene Programmiersprachen gibt die einem das programmieren einer Anbindung erleichtern (sollen). Doch nicht immer ist alles so wie es von den Libraries versprochen wird. In diesem Beitrag beschäftigen wir uns mit Rest, Oauth 1.0 und wie dies bei Magento 1 bzw. bei Magento 2 gelöst wird.

Magento1 REST mit Oauth 1.0

Magento 1 besitzt standardmäßig 2 Arten für eine externe Kommunikation (also API). Da wäre zu meinen das meist genutzte SOAP zum anderen REST. Aber wieso wird REST obwohl es soviel einfach ist als SOAP nicht so oft verwendet. Wir haben den Selbsttest durchgeführt und haben uns mit SOPA unter Magento 1 also auch mit REST etwas näher beschäftigt. Bei den verwendeten Clients sind wir diesmal weg von PHP gegangen und haben uns für die 2 populärsten Programmiersprachen Java und C# entschieden.

REST Bibliotheken gibt es für die 3-legged Authorization (wie sie bei Oauth 1.0 verwendet wird) sowohl für Java als auch C# einige. Der User muss dabei um Erlaubnis anfragen, ob seine Anwendung für sicher eingestuft wird. Nach einigen Tests mit diversen Bibliotheken haben wir herausgefunden ,dass diese eher schlecht als recht funktioniert. Jede API hat so seine Eigenheiten und so auch die REST-API von Magento. Es gibt bei einigen Bibliotheken sogar vordefinierte API Einstellungen für Twitter, Facebook, Google usw. aber leider in den meisten fällen keine für Magento 1. Auch wenn man viele andere Bibliotheken ausprobiert so haben diese auch wieder irgendein anderes Problem und sind unserer Meinung nach nicht einsetzbar. Deshalb ist in den meisten Szenarien die SOAP-API Variante die bessere Wahl, da auch vermehrt darüber berichtet wurde, dass die Core/Oauth Klasse so seine Macken hat.

 

Magento2 REST und Token-based authentication

Wie verhält sich das ganze nun mit Magento 2? Bei Magento 2 ist das Verwenden der REST-API einfach und unkompliziert. Unsere Tests mit C#, Java,iOS, Android und Xamarin waren äußerst vielversprechend. Die Verbindung funktionierte auf Anhieb und war dazu noch äußerst performant. Sowohl beim Aufbauen der Verbindung als auch bei der Rückgabe des Tokens. SOAP wird zwar in Magento 2 noch enthalten wird aber sowohl von der Community als auch von uns nicht wirklich verwendet, da REST doch um einiges schneller und einfacher ist.

Für Magento 2 können wir diese Art der Verbindung absolut empfehlen da es einfach und nicht komplex ist. Der Authorisierungs-Token wird dabei lokal am Gerät gespeichert und muss erst nach einer gewissen Zeit erneuert werden. Den Zeitraum, den der Token gültig ist, kann man dabei im Magento 2 Backend konfigurieren. Der Token wird dann ganz normal wie bei OAuth 1.0 1.0a usw, bei jeder Anfrage wiederverwendet.

 

Zusammenfassend kann man sagen dass Magento 2 hier deutlich moderner ist als sein Vorgänger. Die Performanz der RES-API ist deutlich besser als die SOAP und sollte aus diesem Grund natürlich bevorzugt werden.