Skip to content
IRC-CodingIRC-Coding
SOAPRESTGraphQLAPI StileAPI VergleichWebservices

SOAP vs. REST vs. GraphQL: API-Stile im Vergleich für Praxis und Prüfung

Vergleiche SOAP, REST und GraphQL: Architektur, Protokolle, Vor- und Nachteile, Einsatzgebiete und wichtige Unterschiede für API-Entwicklung und Prüfung.

S

schutzgeist

5 min read
SOAP vs. REST vs. GraphQL: API-Stile im Vergleich für Praxis und Prüfung

SOAP vs. REST vs. GraphQL

SOAP, REST und GraphQL sind drei unterschiedliche Stile für den Aufbau von APIs, die sich in Protokoll, Flexibilität und Einsatzgebieten unterscheiden.

Kompakte Beschreibung

SOAP, REST und GraphQL repräsentieren drei Generationen von API-Architekturen. SOAP ist ein protokollschwerer, standardisierter Webservice-Ansatz, der auf XML und festen Verträgen basiert. REST nutzt die bestehenden HTTP-Methoden und ist ressourcenorientiert, leichtgewichtig und weit verbreitet. GraphQL ist eine Abfragesprache, die es Clients erlaubt, genau die Daten anzufordern, die sie benötigen. SOAP eignet sich besonders für Enterprise-Umgebungen mit strengen Sicherheits- und Transaktionsanforderungen. REST ist der de-facto-Standard für Web-APIs und besonders gut skalierbar. GraphQL punktet bei komplexen, vernetzten Daten und mobilen Anwendungen, bei denen Bandbreite und Anfragewünsche wichtig sind. Die Wahl des Stils hängt von den Anforderungen an Sicherheit, Flexibilität, Performance und bestehende Infrastruktur ab.

Wichtige Komponenten

SOAP

SOAP steht für Simple Object Access Protocol. Es ist ein Protokollstandard für den Austausch von Nachrichten über Netzwerke. SOAP-Nachrichten sind in XML verpackt und folgen einer strengen Struktur. SOAP wird oft über HTTP oder SMTP transportiert und bietet integrierte Standards für Sicherheit, Transaktionen und Zuverlässigkeit. WSDL-Dateien beschreiben den Vertrag zwischen Client und Server. SOAP ist besonders in Unternehmensumgebungen verbreitet, wo formale Verträge und WS-* Standards gefordert sind.

REST

REST steht für Representational State Transfer. Es ist kein Protokoll, sondern ein Architekturstil. REST APIs nutzen URLs für Ressourcen und HTTP-Methoden für Aktionen. Daten werden meist als JSON oder XML ausgetauscht. REST ist zustandslos, ressourcenorientiert und leicht zu verstehen. Es ist der gängige Standard für moderne Web-APIs, Microservices und öffentliche Schnittstellen.

GraphQL

GraphQL ist eine Abfragesprache und Laufzeitumgebung für APIs, die von Facebook entwickelt wurde. Clients senden eine Query, die genau die gewünschten Felder und Beziehungen beschreibt. Der Server liefert nur diese Daten zurück. GraphQL eignet sich besonders für komplexe Datenmodelle, mobile Clients und Situationen, in denen viele unterschiedliche Clients unterschiedliche Daten benötigen.

Protokoll und Transport

SOAP verwendet meist HTTP oder SMTP als Transport, die Nachricht selbst ist jedoch unabhängig vom Transport. REST baut direkt auf HTTP auf und nutzt dessen Methoden und Statuscodes. GraphQL wird meist über HTTP mit POST oder über WebSockets für Subscriptions übertragen.

Datenformat

SOAP verwendet ausschließlich XML. REST nutzt in der Regel JSON, kann aber auch XML, YAML oder andere Formate unterstützen. GraphQL verwendet ein eigenes Schema mit Queries, Mutations und Subscriptions, die typischerweise als JSON übertragen werden.

Flexibilität und Overfetching

REST kann zu Overfetching führen, wenn ein Endpunkt mehr Daten liefert als der Client benötigt. GraphQL vermeidet Overfetching und Underfetching, weil der Client genau die Felder auswählt. SOAP ist sehr streng und flexibel in dem Sinne, dass der Vertrag genau definiert, was erlaubt ist, aber weniger frei für Ad-hoc-Abfragen.

Caching

REST profitiert stark vom HTTP-Caching, weil URLs und Methoden cachebar sind. SOAP ist weniger cachefreundlich, weil Nachrichten oft im Body verpackt sind. GraphQL erfordert spezialisierte Caching-Lösungen, weil Queries im Body übertragen werden und URLs nicht allein den Cache-Schlüssel bilden.

Sicherheit

SOAP bietet eingebaute Sicherheitsstandards wie WS-Security, die Verschlüsselung und Signatur auf Nachrichtenebene ermöglichen. REST nutzt meist TLS, OAuth und JWT auf Transportschicht. GraphQL setzt ebenfalls auf TLS und Token, erfordert aber zusätzliche Maßnahmen wie Query-Komplexitätsbegrenzung und Autorisierung auf Feldebene.

Einsatzgebiete

SOAP wird bevorzugt in Enterprise-Umgebungen, Banken und Systemen mit hohen Sicherheits- und Transaktionsanforderungen. REST ist der Standard für Web-APIs, Mobile Apps und Microservices. GraphQL ist ideal für komplexe Datenlandschaften, mobile Endgeräte und Aggregationsschichten.

Tooling und Ökosystem

REST hat das größte Ökosystem mit Tools wie Postman, Swagger, OpenAPI und vielen Frameworks. GraphQL bietet Apollo, Relay, GraphiQL und codegen. SOAP wird von älteren Enterprise-Toolsets, Java-Frameworks und .NET WCF unterstützt.

Praxisbeispiel

Ein E-Commerce-Unternehmen möchte eine Produktsuche für verschiedene Clients bereitstellen.

SOAP Anfrage:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetProductRequest xmlns="http://shop.example.com/">
      <ProductId>42</ProductId>
    </GetProductRequest>
  </soap:Body>
</soap:Envelope>

REST Anfrage:

GET /api/v1/products/42
Accept: application/json

GraphQL Query:

query {
  product(id: "42") {
    name
    price
    category {
      name
    }
  }
}

Die SOAP-Anfrage ist stark strukturiert und erfordert XML-Validierung. Die REST-Anfrage ist einfach und cachefähig. Die GraphQL-Query liefert genau die gewünschten Felder, auch aus verschachtelten Beziehungen.

FAQ: SOAP vs. REST vs. GraphQL

1. Was ist der Hauptunterschied zwischen SOAP und REST?

SOAP ist ein protokollbasierter Standard mit XML-Nachrichten und WSDL-Verträgen. REST ist ein Architekturstil, der HTTP-Methoden und URLs für Ressourcen nutzt und meist JSON verwendet.

2. Was ist GraphQL?

GraphQL ist eine Abfragesprache für APIs. Clients definieren genau die Daten, die sie benötigen, und der Server liefert nur diese Daten zurück. GraphQL vermeidet Overfetching und Underfetching.

3. Wann sollte man SOAP verwenden?

SOAP eignet sich für Enterprise-Umgebungen mit hohen Sicherheits- und Transaktionsanforderungen, beispielsweise Banken oder Versicherungen. Dort sind formale Verträge und WS-Security gefragt.

4. Wann ist REST die beste Wahl?

REST ist die beste Wahl für Web-APIs, Mobile Apps, Microservices und öffentliche Schnittstellen, die einfach, skalierbar und gut cachebar sein sollen.

5. Wann ist GraphQL sinnvoll?

GraphQL ist sinnvoll, wenn Clients unterschiedliche Daten benötigen, Daten stark vernetzt sind oder Bandbreite kritisch ist, beispielsweise bei mobilen Anwendungen oder Aggregationsschichten.

6. Was ist Overfetching?

Overfetching bedeutet, dass eine API mehr Daten liefert als der Client benötigt. GraphQL vermeidet Overfetching, weil der Client genau die gewünschten Felder auswählt.

7. Was ist Underfetching?

Underfetching bedeutet, dass eine API nicht alle benötigten Daten auf einmal liefert, sodass der Client mehrere Anfragen senden muss. GraphQL löst das, indem verschachtelte Beziehungen in einer Query abgefragt werden können.

8. Ist REST besser als SOAP?

Es gibt kein allgemein besseres Modell. REST ist für viele Web-Szenarien besser geeignet, SOAP für strenge Enterprise-Anforderungen. Die Wahl hängt von den konkreten Anforderungen ab.

9. Was ist eine WSDL?

WSDL steht für Web Services Description Language. Es ist eine XML-basierte Beschreibung eines SOAP-Webservices, die Endpunkte, Operationen und Nachrichtenformate definiert.

10. Was ist ein Resolver in GraphQL?

Ein Resolver ist eine Funktion, die für ein bestimmtes Feld in einer GraphQL Query die Daten bereitstellt. Jeder Typ und jedes Feld kann einen eigenen Resolver haben.

11. Ist GraphQL ein Ersatz für REST?

GraphQL ist keine generelle REST-Ersatz, sondern eine Alternative für bestimmte Szenarien. Beide Stile können auch parallel in einer Architektur eingesetzt werden.

12. Wie unterscheiden sich die Datenformate?

SOAP verwendet XML, REST meist JSON oder XML, GraphQL ein eigenes Schema mit JSON als Übertragungsformat. JSON ist bei REST und GraphQL wegen seiner Einfachheit verbreitet.

13. Was ist besser für Caching?

REST profitiert am meisten vom standardmäßigen HTTP-Caching. SOAP ist weniger cachefreundlich. GraphQL erfordert spezielle Caching-Strategien auf Client- oder Serverseite.

14. Was ist WS-Security?

WS-Security ist ein Standard für die Sicherheit von SOAP-Nachrichten. Er ermöglicht Verschlüsselung und digitale Signaturen auf Nachrichtenebene, unabhängig vom verwendeten Transportprotokoll.

15. Welche API-Architektur ist für Prüfungen wichtig?

Für Prüfungen sind REST und seine Prinzipien besonders wichtig, weil REST der de-facto-Standard ist. GraphQL und SOAP sollten vergleichend verstanden werden, um die richtige Architektur für ein Szenario auswählen zu können.

Weiter im API Lernpfad

Der nächste Artikel im API Lernpfad behandelt gRPC, GraphQL, REST im Vergleich — Performance, Protokolle und Einsatzgebiete der drei API-Architekturen im direkten Vergleich.

Quellen

  1. https://www.w3.org/TR/soap12-part1/
  2. https://www.rfc-editor.org/rfc/rfc9110
  3. https://graphql.org/learn/

Buchempfehlungen zur API-Entwicklung

Wenn Du Dich weiter mit SOAP, REST, GraphQL und API-Design beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:

API-Entwicklung

Bücher über API-Design, REST, GraphQL, OpenAPI und API-Architektur

REST und HTTP: Entwicklung und Integration nach REST-Prinzipien von Stefan Tilkov

REST und HTTP: Entwicklung und Integration nach REST-Prinzipien von Stefan Tilkov

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

API-Design: Praxishandbuch für Java- und Webservice-Entwickler

API-Design: Praxishandbuch für Java- und Webservice-Entwickler

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Microservices: Grundlagen flexibler Softwarearchitekturen von Eberhard Wolff

Microservices: Grundlagen flexibler Softwarearchitekturen von Eberhard Wolff

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Zurück zum DEV Blog
Share:

Ähnliche Beiträge