Directus REST vs. GraphQL: Wann welche API für welche Integration?

Eine der größten Stärken von Directus besteht darin, dass für jedes Datenmodell automatisch sowohl eine REST API als auch eine GraphQL API bereitgestellt wird.

Viele Entwickler stehen deshalb früh vor der Frage: Welche API sollte ich verwenden?

Die gute Nachricht lautet: In Directus gibt es keine falsche Entscheidung. Beide APIs greifen auf dieselben Daten, dieselben Berechtigungen und dieselbe Geschäftslogik zu.

Die spannende Frage lautet vielmehr: Für welchen Anwendungsfall eignet sich welche API besser?

In diesem Beitrag vergleichen wir die Directus REST API und die Directus GraphQL API anhand konkreter Beispiele und zeigen, welche API sich für Frontends, Integrationen, Mobile Apps oder BI-Systeme besonders eignet.

Beides ist auto-generiert – was bedeutet das?

Viele Systeme behandeln REST und GraphQL als separate Implementierungen. Directus verfolgt einen anderen Ansatz.

REST und GraphQL werden automatisch aus dem Datenmodell erzeugt.

Beide APIs spiegeln das gleiche Schema

Beispiel: Collection: customers

Felder:

  • id
  • company
  • email
  • city

Sobald diese Collection existiert, stehen automatisch zur Verfügung:

REST

/items/customers

GraphQL

customers

Es ist keine zusätzliche API-Entwicklung erforderlich.

Permissions gelten identisch

Ein wichtiger Vorteil:

Berechtigungen werden zentral verwaltet.

Egal ob:

  • REST API
  • GraphQL API
  • Directus SDK
  • Data Studio

Die gleichen Regeln greifen überall.

Beispiel:

Ein Benutzer darf nur seine eigenen Datensätze sehen.

Diese Einschränkung gilt automatisch für beide APIs.

Dadurch entstehen keine Sicherheitsunterschiede zwischen REST und GraphQL.

 

REST in Directus

REST eignet sich besonders für klassische Integrationen und API-Kommunikation.

Endpunkt-Struktur

Die Directus REST API folgt einer konsistenten Struktur.

Beispiele:

GET /items/customers
GET /items/customers/123
POST /items/customers
PATCH /items/customers/123
DELETE /items/customers/123

Die Struktur ist leicht verständlich und mit nahezu jedem Tool kompatibel.

Filter-Syntax

Eine Besonderheit von Directus ist die leistungsfähige Filtersprache.

Beispiel: GET /items/customers?filter[city][_eq]=Berlin

Unterstützte Operatoren:

Operator

Bedeutung

_eq

Gleich

_neq

Ungleich

_in

In Liste

_nin

Nicht in Liste

_between

Zwischen zwei Werten

_contains

Enthält

_starts_with

Beginnt mit

Beispiel: GET /items/orders?filter[total][_between]=100,500

Dadurch lassen sich viele Anforderungen direkt über die API lösen.

 

Pagination, Sorting und Fields

REST unterstützt zusätzliche Parameter.

Pagination

?limit=20&offset=40

Sortierung

?sort=-created_at

Feldauswahl

?fields=id,company,email

Diese Optionen reduzieren die übertragene Datenmenge erheblich.

 

Bulk-Operations

Ein Vorteil der Directus REST API sind Bulk-Operationen.

Beispiele:

  • Mehrere Datensätze erstellen
  • Mehrere Datensätze aktualisieren
  • Mehrere Datensätze löschen

Dies vereinfacht Integrationen erheblich.

 

GraphQL in Directus

GraphQL verfolgt einen anderen Ansatz.

Statt Endpunkte zu konsumieren, formuliert der Client exakt die gewünschten Daten.

Auto-generiertes GraphQL-Schema

Directus erstellt das komplette GraphQL-Schema automatisch.

Beispiel:

query {
customers {
id
company
email
}
}

Änderungen am Datenmodell erscheinen unmittelbar im Schema.

System- und Items-Schema

Directus unterscheidet:

Items Schema

Geschäftsdaten:

customers
orders
products

Systeminformationen

users
roles
permissions

Dadurch bleibt die API sauber strukturiert.

Mutations

GraphQL unterstützt nicht nur Lesen, sondern auch Schreiben.

Beispiel:

mutation {
create_customers_item(
data: {
company: "Unit M"
city: "Mülheim"
}
) {
id
}
}

Dadurch lassen sich vollständige Anwendungen auf Basis von GraphQL erstellen.

 

Subscriptions über WebSockets

Ein wichtiger Vorteil der Directus GraphQL API:

Realtime-Unterstützung.

Beispiel:

subscription {
customers_mutated {
key
}
}

Dadurch können Anwendungen auf Änderungen sofort reagieren.

Typische Anwendungsfälle:

  • Kundenportale
  • Support-Systeme
  • Dashboards
  • Mobile Apps

 

REST und GraphQL im direkten Vergleich

Die Diskussion REST versus GraphQL wird oft ideologisch geführt.

In der Praxis haben beide Ansätze ihre Stärken.

Bandbreite und Datenmenge

REST kann zu Over-Fetching führen.

Beispiel:

Ein Endpunkt liefert 30 Felder.

Benötigt werden jedoch nur 3.

GraphQL erlaubt die exakte Auswahl.

Beispiel:

query {
customers {
company
email
}
}

Dadurch sinkt die Datenmenge.

Caching

Hier besitzt REST häufig Vorteile.

REST nutzt: GET

Anfragen können dadurch einfach über:

  • CDN
  • Reverse Proxy
  • Varnish
  • Cloudflare

gecached werden.

GraphQL verwendet häufig: POST

Dadurch wird klassisches HTTP-Caching schwieriger.

Praktische Konsequenz

Für stark frequentierte APIs kann REST effizienter sein.

Tooling

REST:

  • Postman
  • Insomnia
  • Curl

GraphQL:

  • GraphQL Playground
  • Apollo Studio
  • Relay DevTools

Beide Welten verfügen über ausgereifte Werkzeuge.

Lernkurve

REST ist für viele Teams leichter zugänglich.

GraphQL erfordert zusätzliche Konzepte:

  • Queries
  • Mutations
  • Subscriptions
  • Schema Design

Für erfahrene Frontend-Teams kann GraphQL langfristig produktiver sein.

 

Empfehlungs-Matrix

Die wichtigste Frage lautet: Wann sollte welche API verwendet werden?

Mobile Apps

Empfehlung: Eher GraphQL

Vorteile:

  • Weniger Datenübertragung
  • Flexible Abfragen
  • Gute Offline-Synchronisation

Webhooks und Integrationen

Empfehlung: Eher REST

Vorteile:

  • Einfacher
  • Universell unterstützt
  • Gute Tool-Kompatibilität

Typische Beispiele:

  • Zapier
  • n8n
  • ERP-Systeme

BI-Tools

Empfehlung: Meist REST

Viele Analysewerkzeuge arbeiten besser mit REST-Endpunkten.

Apollo und Relay Frontends

Empfehlung:

GraphQL

Wer bereits Apollo oder Relay nutzt, profitiert direkt vom automatisch generierten GraphQL-Schema.

 

Mit dem Directus SDK

In vielen Projekten wird die API nicht direkt verwendet.

Stattdessen kommt das Directus SDK zum Einsatz.

SDK-Methoden im Überblick

Das SDK unterstützt:

  • REST
  • GraphQL
  • Realtime
  • Authentifizierung

Dadurch kann später problemlos gewechselt werden.

Side-by-Side: REST vs. GraphQL

Beispiel: Wir möchten Kunden abrufen.

REST

import { createDirectus, rest, readItems } from "@directus/sdk";

const directus = createDirectus(url).with(rest());

const customers = await directus.request(
readItems("customers")
);

GraphQL

import { createDirectus, graphql } from "@directus/sdk";

const directus = createDirectus(url).with(graphql());

const customers = await directus.query(`
query {
customers {
id
company
email
}
}
`);

Beide Varianten liefern dieselben Daten.

Der Unterschied liegt vor allem in der Art der Abfrage.

 

Typische Architekturentscheidungen

Aus der Praxis haben sich folgende Muster etabliert:

Kundenportal

GraphQL

Mobile App

GraphQL

ERP-Integration

REST

CRM-Synchronisation

REST

BI-Reporting

REST

Echtzeit-Dashboard

GraphQL mit Subscriptions

Diese Kombinationen haben sich in vielen Projekten bewährt.

 

Fazit

Directus bietet den seltenen Vorteil, dass REST und GraphQL parallel verfügbar sind. Beide APIs basieren auf demselben Datenmodell und denselben Berechtigungen.

Die Entscheidung hängt daher vor allem vom Anwendungsfall ab.

REST eignet sich besonders für

  • Integrationen
  • Webhooks
  • ERP-Systeme
  • BI-Tools
  • Caching

GraphQL eignet sich besonders für

  • Frontends
  • Mobile Apps
  • Echtzeitanwendungen
  • Apollo- oder Relay-Architekturen

Für viele Unternehmen ergibt sich daraus eine hybride Architektur:

REST für Integrationen. GraphQL für Benutzeroberflächen.

Sie benötigen nicht nur APIs, sondern auch Authentifizierung, Rollenmodelle und Dateiverwaltung? Dann werfen Sie einen Blick auf Directus als Backend-as-a-Service.

FAQ

Unterstützt Directus REST und GraphQL gleichzeitig?

Ja. Beide APIs werden automatisch aus dem Datenmodell erzeugt und können parallel verwendet werden.

Welche API ist schneller?

Das hängt vom Anwendungsfall ab. GraphQL reduziert häufig die Datenmenge, während REST einfacher zu cachen ist.

Kann ich die GraphQL API anpassen?

Das Schema wird automatisch aus dem Directus Datenmodell erzeugt. Individuelle Erweiterungen können über Extensions und Custom Endpoints ergänzt werden.

Wie cache ich API-Anfragen?

REST-Anfragen lassen sich einfach über CDN oder Reverse Proxy cachen. Bei GraphQL sind zusätzliche Strategien erforderlich.

Welche API sollte ich für n8n oder Zapier verwenden?

Für die meisten Integrationen empfiehlt sich REST, da diese Werkzeuge REST-Endpunkte direkt unterstützen.

Unterstützt GraphQL Realtime-Funktionen?

Ja. Directus unterstützt GraphQL Subscriptions über WebSockets für Echtzeit-Anwendungen.