Blog HostingInternet

GraphQL & REST API im Vergleich

Application Programming Interface
GraphQL & REST API im Vergleich - Bild: © MICHAEL ZECH #278335772 – stock.adobe.com

Um einen Austausch von Web-Anwendungen mit lokalen oder entfernten Programmen zu ermöglichen, ist sogenanntes API – Application Programming Interface – sinnvoll. Diese auf Websites universelle, implementierte Schnittstelle ist maßgeblich für Art sowie Struktur der Kommunikation und auf Verbindungen von außerhalb angewiesen. Für eine etwaige Datenübermittlung und Kontaktaufnahme gibt es neben eigenen sowie proprietären Optionen weitere allgemeine Richtlinien, mit deren Hilfe ein einheitlicher Standard erzeugt werden soll.

Zwei der beliebtesten und am weitesten verbreiteten Ansätze sind GraphQL sowie REST bzw. Representional State Transfer.

Wissenswertes rund um REST und GraphQL

Die Programme GraphQL sowie REST sind darauf ausgelegt, eine Basis für generell verständliche sowie einsetzbare API festzulegen. Unter Einschränkungen ist von einer konkreten Schnittstelle die Rede, die einerseits genormte feste Strukturen sowie Befehle aufweist.

Andererseits sind die Anwendungen durch verschiedene Konzepte und Architekturen gekennzeichnet, welche unterschiedliche Vor- und Nachteile bieten.

Insbesondere für REST existiert keine universelle Schnittstelle. Vielmehr bezieht sich diese Anwendung auf Methoden, die der Kommunikation zwischen Maschinen wie Machine-to-Machine sowie Programmen dienen. GraphQL gilt hingegen als Kombination aus Typsystem für eine Beschreibung der API, angepasster Laufzeitumgebung für verschiedene Programmiersprachen sowie SQL-ähnlicher Abfragesprache.

API
Die Programme GraphQL sowie REST sind darauf ausgelegt, eine Basis für generell verständliche sowie einsetzbare API festzulegen – Bild: © NicoElNino #328528736 – stock.adobe.com

Die wichtigsten Eigenschaften von REST

Die Konzipierung sowie die Bezeichnung von REST basieren auf einer Dissertation des US-amerikanischen Informatikers Roy Thomas Fieldings. In seiner Arbeit entwickelt dieser REST als Aneinanderreihung von Vorgaben, welche für eine Kommunikation als API beachtet werden müssen.
Dazu gehören beispielsweise folgende Vorgaben:

  • Adressierbarkeit sämtlicher Ressourcen über international einmalige Adresse bzw. einer URL
  • vereinheitlichte Schnittstellen, beispielsweise durch die POST oder GET Methode via HTTP
  • eindeutige Strukturierung mit Servern sowie Clients, welche Verbindungsaufbau ermöglichen
  • Nachrichten mit allen für das Verständnis erforderlichen Daten
  • Präsentation von Ressourcen in verschiedenen Sprachen wie XML, JSON oder HTML
  • Zur-Verfügung-Stellung über einfache URLs über Server ohne zusätzliche Informationen

Dieser Ansatz birgt nachfolgende Vorteile:

  • Webserver wie Apache oder NGINX als API-Schnittstelle
  • Nutzung selten geblockter Ports für Kommunikation
  • Einfache, eindeutige API-Identifizierung
  • Nutzung von HTTP Methoden wie GET oder POST für Kommunikation
  • Anwendung ist unabhängig von Betriebssystem, Software und Plattform nutzbar
  • Unterstützung für Desktops sowie mobile Clients
  • ausgezeichnete Performance sowie Skalierbarkeit

Besonderheiten von GraphQL

Initiator von GraphQL ist Facebook, welches im Jahr 2012 die Norm für eine effektive API für den internen Gebrauch konzipierte. Diese Norm publizierte Facebook seit 2015 für eine allgemeine Nutzung als Open Source. GraphQL ist eine Mischung aus Laufzeitumgebung samt Bibliotheken für unterschiedliche Programmiersprachen wie Python, PHP, Ruby oder JavaScript sowie einer Datenbank mit SQL-ähnlicher Syntax.
Die Validität der Anfragen wird über das Typsystem abgefragt, das mithilfe spezieller Einträge sowie individueller Struktur die User identifizieren und authentifizieren kann.
Hierbei bietet GraphQL folgende Vorteile:

  • einfache Integration in eigenen Code mithilfe von Bibliotheken
  • komplette Laufzeitumgebung ist in Open Source verfügbar
  • mit verschiedenen Frameworks und Programmiersprachen kompatibel
  • flexible Anpassungsmöglichkeiten der API
  • unabhängig von Webservern oder anderweitigen IT-Infrastrukturen
  • direkter Informationsaustausch im Datenbankformat

Anwendungen mit vielen Vorteilen

Beide Anwendungen überzeugen mit spezifischen Vorteilen und weisen aufgrund hoher Flexibilität sowie Optionen zur Individualisierung nur wenige Nachteile auf. Die Wahl eines geeigneten Verfahrens richtet sich in erster Linie nach der persönlichen Präferenz.
Einzige Ausnahme sind sogenannte Stand-Alone-Applikationen, welche ihre API ausschließlich verwenden. In diesem Fall ist zumeist GraphSQL vorteilhaft, falls keine andere Software wie Webserver genutzt werden soll.