API in JavaScript: REST, GraphQL, gRPC – was wählt man 2025?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Die drei Säulen der Integration: REST, GraphQL und gRPC in der JavaScript-Welt

\n\n

Die Entwicklung mit JavaScript ist heute ein endloser Datenaustausch. Ihre Anwendung ruft Wechselkurse ab, sendet Formulare, streamt Videos oder synchronisiert Dokumente in Echtzeit. Und jedes Mal wählen Sie, wie genau Ihr Client mit dem Server kommunizieren soll.

\n\n

Lange Zeit war REST der Standard. Es ist einfach wie ein Hammer. Aber für komplexe Projekte reicht ein Hammer nicht – man braucht ein Schweizer Taschenmesser (GraphQL) oder sogar einen Presslufthammer (gRPC).

\n\n

In diesem Artikel analysieren wir die drei wichtigsten Ansätze für die Arbeit mit APIs in JavaScript. Sie sehen echte Codebeispiele, verstehen die Stärken und Schwächen jedes Protokolls und können bewusst das Werkzeug für Ihr nächstes Projekt auswählen. Los geht's!

\n\n

REST API: Ein Klassiker, der nicht stirbt

\n\n

REST (Representational State Transfer) ist ein Architekturstil, kein Protokoll. Die meisten Entwickler verstehen unter REST HTTP-Anfragen an Ressourcen (GET /users, POST /orders).

\n\n

Wie eine REST-Anfrage in JavaScript aussieht

\n\n

Die beliebteste Methode ist natives fetch oder die Bibliothek axios. Hier ist eine typische GET-Anfrage:

\n\n
// Benutzerliste abrufen\nconst getUsers = async () => {\n  const response = await fetch('https://api.example.com/users');\n  if (!response.ok) {\n    throw new Error(`HTTP error! status: ${response.status}`);\n  }\n  const data = await response.json();\n  return data;\n};\n\n// Beispiel zur Verwendung\ntry {\n  const users = await getUsers();\n  console.log(users);\n} catch (error) {\n  console.error('Fehler beim Laden der Benutzer:', error);\n}\n
\n\n

Vorteile von REST für JavaScript-Entwickler

\n\n
    \n
  • Einfachheit und Vorhersagbarkeit. GET, POST, PUT, DELETE – jedes Verb hat eine klare Bedeutung.
  • \n
  • Caching. HTTP-Caching funktioniert sofort und beschleunigt wiederholte Anfragen.
  • \n
  • Breite Unterstützung. Jedes Backend in jeder Sprache kann REST ausliefern.
  • \n
  • Werkzeuge. Postman, Swagger, Insomnia – eine riesige Ökosystem zum Testen.
  • \n
\n\n

Hauptnachteile von REST

\n\n
    \n
  • Over-fetching (Datenredundanz). Sie fragen /users ab, und der Server gibt alle Felder zurück, einschließlich Passwort (Hash natürlich) und interne IDs, obwohl Sie nur Name und E-Mail benötigen.
  • \n
  • Under-fetching (Datenmangel). Um einen Benutzer und seine letzten Bestellungen zu erhalten, müssen Sie zwei Anfragen stellen: /users/1 und /users/1/orders.
  • \n
  • Viele Endpunkte. Komplexe Geschäftslogik erzeugt Dutzende von URLs, die schwer zu warten sind.
  • \n
\n\n
\n

Wann REST wählen? Ideal für einfache CRUD-Anwendungen, öffentliche APIs und Projekte, bei denen Einfachheit und Caching wichtig sind.

\n
\n\n

GraphQL: Nur das anfordern, was benötigt wird

\n\n

GraphQL ist eine Abfragesprache und Laufzeitumgebung, die von Facebook (jetzt Meta) entwickelt wurde. Statt vieler Endpunkte gibt es einen einzigen Endpunkt, und der Client entscheidet selbst, welche Felder abgerufen werden.

\n\n

GraphQL-Abfrage in JavaScript schreiben

\n\n

Für die Arbeit mit GraphQL auf dem Client wird meist die Bibliothek @apollo/client oder urql verwendet. Man kann es aber auch einfach über fetch machen:

\n\n
// GraphQL-Abfrage über fetch\nconst query = `\n  query {\n    user(id: "123") {\n      name\n      email\n      posts {\n        title\n        createdAt\n      }\n    }\n  }\n`;\n\nconst fetchUserWithPosts = async () => {\n  const response = await fetch('https://api.example.com/graphql', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ query })\n  });\n  const result = await response.json();\n  return result.data;\n};\n\n// Aufruf\nfetchUserWithPosts().then(data => console.log(data));\n
\n\n

Sehen Sie den Unterschied

Blogs

Buchempfehlungen