Skip to main content

Web Services mit GraphQL (statt REST/SOAP)

đź§ 

Dieser Wiki-Eintrag erklärt das Konzept von Web Services am Beispiel von GraphQL und grenzt es von klassischen Architekturen wie REST oder SOAP ab. Ziel ist es, ein grundlegendes Verständnis fĂĽr clientseitige Datenabfragen ĂĽber standardisierte Schnittstellen zu schaffen.

 

Einordnung: Was sind Web Services?

Ein Web ServiceServices iststellen eine standardisierte Möglichkeit,Methode ĂĽberdar, HTTPum Daten zwischen SystemenClient auszutauschen.und Server auszutauschen – meist ĂĽber das HTTP-Protokoll. Sie ermöglichen plattformunabhängige Kommunikation, eine lose Kopplung zwischen Systemkomponenten und den Zugriff auf zentrale Datenquellen oder Geschäftslogik.

 

Etablierte Architekturen im Vergleich

Im Laufe der Zeit haben sich drei grundlegende Web-Service-Modelle etabliert: SOAP, REST und GraphQL. Die dreifolgende bekanntestenTabelle Varianten:bietet eine strukturierte GegenĂĽberstellung:

Beschreibung

Ressourcenzugriff

ĂĽberformalund

GraphQL

Typ

Kriterium
SOAP REST GraphQL

REST

Architekturtyp
Protokollbasiert Architekturstil Abfragesprache HTTP-Methoden& (GET, POST, etc.). Einfach, weit verbreitet.

Laufzeitumgebung

SOAP

Transportprotokoll
HTTP,

XML-basiert,SMTP, sehrTCP

HTTP HTTP standardisiert.(meist Heute selten in Web-Projekten.

POST)
Datenformat XML JSON, XMLJSON
EndpunkteMehrere, pro OperationMehrere, pro RessourceEin einziger Endpunkt
AbfrageflexibilitätGering – festgelegte OperationenMittel – durch verschiedene EndpunkteHoch – clientseitig definierte Abfragen
VersionierungÜber WSDL-DateienHäufig über URL-Versionierung (z. B. /v1/)Nicht erforderlich – Schema kann erweitert werden
CachingKomplex, selten genutztGut unterstützt durch HTTP-CachingEingeschränkt – abhängig von Abfragekomplexität
FehlerbehandlungStandardisierte Fehlercodes in XMLHTTP-Statuscodes + optionale FehlermeldungenFehlerobjekte im JSON-Format
SicherheitsmechanismenWS-Security (z. B. XML-Signaturen)TLS/HTTPS, OAuth, API-KeysTLS/HTTPS, OAuth, API-Keys
EinsatzgebieteUnternehmensanwendungen, Legacy-SystemeWeb-APIs, Microservices, mobile AnwendungenModerne SPAs, mobile Apps, datenintensive Anwendungen
KomplexitätHoch – umfangreiche SpezifikationenMittel – abhängig vom Design

ClientHoch bestimmt– selbst,insbesondere welchebei Felderkomplexen

er braucht. Flexibler als REST.

Schemas

Wir konzentrieren

uns

GraphQL im Detail

GraphQL ist ein modernes API-Design-Paradigma, das 2015 von Facebook veröffentlicht wurde. Es verfolgt einen abfragegetriebenen Ansatz, bei dem der Client exakt definiert, welche Daten benötigt werden. Dies unterscheidet sich grundlegend von REST, wo die Struktur der Antwort durch den Server vorgegeben wird.

Ein GraphQL-Endpunkt akzeptiert zwei Arten von Operationen:

  • Queries: Daten vom Server lesen
  • Mutations: Daten auf GraphQLdem Server verändern

 

Beispiel: Datenabfrage mit einer Query

query {
  books {
    title
    author
  }
}

Diese Abfrage fordert vom Server alle BĂĽcher und gibt pro Buch nur die Felder title und author zurĂĽck – weitere Felder wie id, weil:createdAt etc. werden ignoriert, sofern sie nicht explizit abgefragt werden.

 

Beispiel: Datenerzeugung mit einer Mutation

mutation {
  addBook(title: "Clean Code", author: "Robert C. Martin") {
    id
    title
    author
  }
}

Mutationen ähneln POST-Requests in REST. Sie erlauben das Anlegen, Verändern oder Löschen von Datenobjekten.

 

Aufbau eines GraphQL-Backends

Ein GraphQL-Dienst basiert auf einem Schema, das die verfügbaren Typen, Queries und Mutationen beschreibt. Die eigentliche Logik liegt in sogenannten Resolvern, die die Daten bereitstellen oder verändern.

Ein einfaches Setup umfasst:

  1. Definition des Schemas (Typen & Operationen)

  2. Implementierung der Resolver

  3. Bereitstellung ĂĽber einen GraphQL-Server

 

Apollo Server

FĂĽr Node.js-Projekte ist Apollo Server eine der bekanntesten und am besten dokumentierten Lösungen zur Umsetzung eines GraphQL-Endpunkts. Apollo Server stellt Werkzeuge bereit, um:

  • moderneein CMS-SystemeTypschema wiezu PayloadCMS das anbietendefinieren

  • es besonders gutResolver-Funktionen zu Singleimplementieren

    Page
  • Apps
  • (SPA)

    Middleware-Logik fĂĽr Authentifizierung, Logging oder Caching zu integrieren

  • einen interaktiven Playground fĂĽr Queries bereitzustellen

Apollo lässt sich leicht mit Express oder Fastify kombinieren und ist durch seine Modularität für einfache wie komplexe Projekte gleichermaßen geeignet.

Weitere verwandte Tools im Apollo-Ă–kosystem sind:

  • Apollo Client: fĂĽr die Anbindung im Frontend (z. B. in SvelteReact passtoder Vue)

  • Apollo Federation: fĂĽr das ZusammenfĂĽhren mehrerer GraphQL-Services (Microservices)

 

🎯Typische WofüEinsatzszenarien

GraphQL eignet sich besonders für geeignet?Anwendungen mit variablen oder dynamisch zusammensetzbaren Datenansichten, z. B.:

  • DatenaustauschSingle zwischenPage FrontendApplications und(SPAs) Backendmit Frontend-Frameworks wie Svelte, React oder Vue

  • API-first-ArchitekturenMobile Apps mit geringem Datenbudget

  • SchnellHeadless wechselndeCMS-Lösungen Datenmodellemit flexiblen Content-Views

Im CMS-Kontext ist GraphQL besonders dann interessant, wenn verschiedene Frontends unterschiedliche Datenansichten benötigen – etwa eine Vorschau in der Admin-UI und eine kompakte Darstellung im öffentlichen Blog.

 

📦Fazit

Im

GraphQL CMS-Kontextist ein leistungsfähiges und zugleich flexibel einsetzbares Werkzeug für moderne Webarchitekturen. Es bietet eine strukturierte und typisierte Alternative zu REST und ermöglicht effiziente, clientgesteuerte Datenabfragen. Die Einführung in ein Projekt lohnt sich vor allem dann, wenn unterschiedliche Clients auf dieselbe API zugreifen oder Daten gezielt gefiltert werden sollen.

Ein SvelteKit-Frontendvollständiges kannBeispiel gezieltzur FelderUmsetzung eines BlogpostsGraphQL-Servers laden:

mit
queryApollo {und post(id:TypeScript 1) {
    title
    tags
  }
}

Du bekommst nur die Daten, diefindest du wirklichin brauchst.unserem Repository: https://gitlab.rlp.net/marius.klein2/awt-marius-klein/-/tree/main/beispielaufgaben/server-client-kommunikation/graphql-book-service