logo

Palette - Mach es bunt🎨

Palette - Visueller Page Builder. Keine Designkenntnisse nötig.

Live-Demo Palette herunterladen

Scroll

JSON:API vs. REST-Modul des Kerns

21/05/2025, by Ivan

TL;DR

Wähle REST, wenn du nicht-entitybezogene Daten bereitstellen möchtest. In allen anderen Fällen wähle JSON:API.

Etwas differenzierter:

  • Das REST-Modul im Core erlaubt alles (beliebiges Format, beliebige Logik, beliebige HTTP-Methoden) und ist extrem konfigurierbar. Mächtig, aber komplex und daher relativ fehleranfällig.
  • JSON:API konzentriert sich darauf, Drupals größte Stärke (Entities/Datenmodellierung) konsistent bereitzustellen. Einfach, aber für die meisten Anwendungsfälle ausreichend leistungsfähig.

Feature-Matrix

Vergleich der wichtigsten Features von JSON:API und REST.
Feature JSON:API REST Bemerkung
Entities als Ressourcen verfügbar ✔️ ✔️ REST: Muss für jeden Entitätstyp einzeln konfiguriert werden. JSON:API: Alles wird standardmäßig verfügbar gemacht. Beide respektieren Entity-Access.
Eigene Daten als Ressourcen verfügbar machen   ✔️ Erstelle eigene @RestResource-Plugins. JSON:API unterstützt nur Entities.
Abruf einzelner Ressourcen ✔️ ✔️  
Listen von Ressourcen abrufen ✔️ teilweise REST: Du musst eine View konfigurieren und eine "REST-Export"-Anzeige einrichten.
Paginierung von Ressourcenlisten ✔️ Zusätzliche Module wie Pager Serializer notwendig. REST: nicht unterstützt! REST-Export-Views geben alle Ressourcen zurück.
Filtern von Ressourcenlisten ✔️ teilweise REST: nur möglich, wenn du für jedes Feld und jeden Operator einen eigenen Exposed-Filter erstellst.
Sortierung von Ressourcen ✔️    
Includes/Embedding ✔️ Nur in HAL+JSON  
Keine unnötige Verschachtelung von Feldwerten ✔️   HAL-Normalisierung und Default-Normalisierung (und somit alle Formate) geben exakt die in PHP genutzten Datenstrukturen aus, was für API-Verbraucher schwierig sein kann. JSON:API vereinfacht die Ausgabe für einfache Felder.
Felder auslassen, die der Client nicht benötigt ✔️    
Konsistente URLs ✔️    
Der Client kann verfügbare Ressourcentypen ermitteln ✔️    
Drupal-unabhängige Antwortstruktur ✔️   REST: HAL-Normalisierung ist theoretisch drupal-unabhängig, aber in der Praxis nicht wirklich.
Client-Bibliotheken ✔️    
Erweiterbare Spezifikation In Arbeit    
Keine Konfiguration nötig (Zero configuration) ✔️   REST: Jedes @RestResource-Plugin muss erst konfiguriert werden (Formate, Authentifizierung, Methoden usw.). JSON:API: Alle Entitäten werden automatisch bereitgestellt, Zugriffsrechte werden respektiert, alle installierten Authentifizierungsmethoden sind automatisch erlaubt.

Weitere Informationen

Siehe die Begründung für die Aufnahme von JSON:API in den Drupal Core und die Architektur-Rationale des Moduls.

Artikel aus der Drupal Dokumentation.