GraphQL für noch mehr Speed: aleno setzt auf topmoderne Schnittstelle

Olaf Kunz
Dezember 30, 2022

Wir haben die aleno-Schnittstelle umgestellt - von REST-API auf GraphQL. Das bringt für Kunden enorme Vorteile. Und sie können sich auf viele, viele neue Integrationen zu anderen Software-Systemen, noch grösseren Funktionsumfang und noch optimalere Abläufe im Betrieb freuen. Wir erklären hier, warum das so ist und was das konkret bedeutet.

 

2022 hat die Entwicklungsabteilung von aleno 13 Integrationen zu anderen gastronomischen Software-Systemen veröffentlicht. Von Kassensystemen wie Hypersoft, Lightspeed oder GMS über PMS wie Protel, Mews und Fidelio bis hin zu Reserve with Google. Alle Integrationen sind auf unserem Marketplace verfügbar. 

 

Das bedeutet für Kunden umfangreiche Gästedaten, mehr Möglichkeiten auf diversen Channels (zum Beispiel auf Google Maps oder via Google My Business) direkt buchbar zu sein und vor allem weniger Aufwand. Weil zum Beispiel Gäste nicht mehr im Kassensystem UND im Reservierungssystem eingecheckt werden müssen, sondern nur noch in einem einzigen. 

Was ist GraphQL und warum ist es wichtig?

GraphQL ist eine Sprache, die 2012 von Facebook entwickelt wurde und die dazu dient, Daten von einem Server abzufragen. Seit 2015 ist graphql.org ein Open-Source-Projekt und eine Alternative zu RESTful Web Services.  Viele große Unternehmen wie Twitter, Github, New York Times und Pinterest arbeiten mit der Software.

 

Der wesentliche Unterschied zwischen REST und GraphQl: Bei REST-Services entscheidet der Server, welche Daten zurückgegeben werden. Bei GraphQL entscheidet der Client, welche Daten gewünscht sind und erhält nur diese. Ein Client ist dabei eine Anwendung, die Dienste von einem anderen Computer, dem Server, in Anspruch nimmt. 

 

Was sind die Vorteile von GraphQL gegenüber REST?

  1. Der Client hat volle Kontrolle darüber, welche Daten er erhält und kann diese genau auf seine Bedürfnisse abstimmen.
  2. Steigerung der Performanz: Anzahl nötiger Anfragen und die Menge übertragener Daten lässt sich reduzieren. Das ist ein großer Vorteil für den mobilen Bereich.
  3. Entwickler profitieren von der flexiblen Abfragesprache und dem typisierten Schema

 

GraphQL ermöglicht es Entwicklern damit, ihre Anwendungen flexibler und skalierbarer zu gestalten und bietet gleichzeitig eine verbesserte Benutzererfahrung, da der Client schneller auf Anfragen reagieren kann, da er nur die benötigten Daten abruft. So ist es einfacher, Integrationen zu anderen Software-Systemen zu entwickeln. Das ist wertvoll für Kunden, die oft vielfältige Systeme für Review-Management, Kasse, Revenue-Management, Einkauf, Warenverwaltung etc im Einsatz haben. 

 

Wie funktioniert GraphQL?

In GraphQL kommunizieren Client und Server über HTTP-Anfragen und -Antworten, ähnlich wie bei REST APIs. Der Client sendet eine GraphQL-Anfrage an den Server, indem er eine POST-Anfrage an den GraphQL-Endpunkt des Servers sendet. Die Anfrage enthält eine Abfrage, die beschreibt, welche Daten der Client vom Server abrufen möchte.

Hier ist ein Beispiel für eine GraphQL-Abfrage, die vom Client an den Server gesendet werden könnte:

{
user(id: "123") {
name
email
}
}

 

In dem Beispiel oben wird vom Server ein Benutzer mit der id: "123"angefordert und dessen Name und E-Mail-Adresse angezeigt. Der Server empfängt die Anfrage und verarbeitet sie, indem er die angeforderten Daten abruft und sie im angeforderten Format zurückgibt. Hier ist ein Beispiel für eine Antwort, die der Server auf die oben genannte Abfrage senden könnte:

{
"data": {
"user": {
"name": { "John Smith",
"email": { "john@example.com"
}
}
}

 

Das GraphQL-Schema kann auch operationelle Typen enthalten, die beschreiben, wie Daten erstellt, aktualisiert oder gelöscht werden können. Hier ist ein Beispiel für den type Mutation, der die Fähigkeit zum Erstellen, Aktualisieren und Löschen von Benutzern definiert:

type Mutation {
createUser(name: String!, email: String!): User
updateUser(id: ID!, name: String, email: String): User
deleteUser(id: ID!): User
}

 

In diesem Beispiel wird der Typ "Query" als ein Benutzer mit einer ID und einem Namen definiert. Die Abfrageoperation "users" gibt eine Liste aller Benutzer zurück und die Abfrageoperation "user" gibt einen bestimmten Benutzer anhand seiner ID zurück.

 

Werden Software-Systeme miteinander verbunden, können sie über solche Abfragen Daten miteinander austauschen. Zum Beispiel das Kassensystem Konsumationsdaten eines Gastes an das Reservierungssystem senden. Über die Tischnummer und den Zeitpunkt der Konsumation kann die Bestellung dem Gast zugeordnet werden, der die Reservierung für diese Zeit getätigt hat. Damit erhalten Konsumationsdaten plötzlich einen Namen. Beim nächsten Restaurant-Besuch weiss das Service-Personal bereits im Vorfeld, ob der Gast ein Hoch-Umsatzpotenzial hat und was er beim letzten Besuch konsumiert hat. Das erleichtert das Upselling. 

 

Wie entwickelt sich GraphQL in der Zukunft?

Es ist davon auszugehen, dass GraphQL weiter an Popularität gewinnen wird und sich als die leistungsstarke Alternative zu REST APIs etabliert. Auch wenn GraphQL sehr gute Kenntnisse in der API-Entwicklung und im allgemeinen Software-Engineering erfordert. Ein absoluter Anfänger wird es schwer haben, GraphQL gut genug zu verstehen, um eine komplexe Anwendung zu entwickeln.

 

Immerhin: Es gibt auch viele Client-Bibliotheken für verschiedene Programmiersprachen und Plattformen, die Entwicklern dabei helfen, GraphQL-Anfragen von einem Client aus zu senden und die Antworten zu verarbeiten. Beispiele für solche Bibliotheken sind "Apollo Client" für JavaScript und "GraphQL-Swift" für iOS.

 

Es wird auch erwartet, dass sich GraphQL in Richtung erweiterter Sicherheitsfunktionen und der Unterstützung von neuen Datenquellen und -formaten entwickelt. Die Community von GraphQL wächst stetig und es wird erwartet, dass sie weiterhin an der Weiterentwicklung der Sprache arbeiten wird, um sie noch besser an die Bedürfnisse von Entwicklern und Benutzern anzupassen.

Gibt es eine Software, die bei dir im Einsatz ist und für die noch keine Integration in unserem Marketplace besteht?

Nimm mit uns Kontakt auf