GraphQL API mit JavaScript: Schritt-für-Schritt-Tutorial für Node.js

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
Here is the translated HTML content in German, with all HTML tags preserved and only the text content translated. ```html

GraphQL API mit JavaScript: Schritt-für-Schritt-Tutorial für Node.js

GraphQL ist eine leistungsstarke Abfragesprache für APIs, die von Facebook entwickelt wurde. Im Gegensatz zu REST, bei dem Sie feste Datenstrukturen erhalten, ermöglicht GraphQL dem Client, nur das anzufordern, was er benötigt. In diesem Tutorial erstellen wir eine vollständige GraphQL API in JavaScript mit Node.js und Apollo Server. Sie lernen, wie Sie den Server einrichten, ein Schema definieren, Resolver schreiben und Abfragen sowie Mutationen ausführen.



Was ist GraphQL und warum wird es benötigt?

GraphQL löst mehrere Probleme von REST APIs:

  • Datenredundanz: Der Client erhält nur die Felder, die er angefordert hat.
  • Mehrere Abfragen: Eine einzige GraphQL-Abfrage kann mehrere REST-Endpunkte ersetzen.
  • Starke Typisierung: Das Schema definiert die Datentypen und die Beziehungen zwischen ihnen.

JavaScript (Node.js) ist die ideale Wahl für die Erstellung einer GraphQL API, dank des riesigen Paket-Ökosystems und der asynchronen Natur.



Schritt 1: Installation und Einrichtung des Projekts

Erstellen Sie ein neues Verzeichnis und initialisieren Sie das Projekt:

mkdir graphql-api-tutorialcd graphql-api-tutorialnpm init -y

Installieren Sie die erforderlichen Abhängigkeiten:

npm install apollo-server graphql

Erstellen Sie die Datei index.js – dies wird der Einstiegspunkt unserer Anwendung sein.



Schritt 2: Definition des GraphQL-Schemas

Das Schema ist der Kern der GraphQL API. Es beschreibt die Datentypen und die verfügbaren Operationen (Abfragen, Mutationen, Subscriptions). Wir erstellen ein einfaches Schema zur Verwaltung von Büchern.

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql` type Book { id: ID! title: String! author: String! year: Int }

type Query { books: [Book] book(id: ID!): Book }

type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book }`;

Hier haben wir definiert:

  • Book – ein Objekttyp mit den Feldern id, title, author, year.
  • Query – der Einstiegspunkt zum Lesen von Daten (Liste der Bücher und Buch nach ID).
  • Mutation – Operationen zur Datenänderung (Hinzufügen und Löschen eines Buches).


Schritt 3: Schreiben der Resolver

Resolver sind Funktionen, die die Daten für jedes Feld des Schemas zurückgeben. Wir erstellen eine fiktive Datenbank (Array von Objekten) und implementieren die Resolver.

let books = [  { id: '1', title: '1984', author: 'George Orwell', year: 1949 },  { id: '2', title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 },];

const resolvers = { Query: { books: () => books, book: (parent, args) => books.find(book => book.id === args.id), }, Mutation: { addBook: (parent, args) => { const newBook = { id: String(books.length + 1), title: args.title, author: args.author, year: args.year, }; books.push(newBook); return newBook; }, deleteBook: (parent, args) => { const index = books.findIndex(book => book.id === args.id); if (index === -1) return null; const deletedBook = books.splice(index, 1)[0]; return deletedBook; }, },};

Beachten Sie die Struktur: Query und Mutation sind Objekte, die Resolver-Methoden enthalten. Jeder Resolver akzeptiert drei Argumente: parent (Ergebnis des übergeordneten Resolvers), args (Abfrageargumente) und context (Kontextobjekt, z. B. für die Authentifizierung).



Schritt 4: Server starten und testen

Jetzt verbinden wir das Schema und die Resolver im Apollo Server:

const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => { console.log(`🚀 Server ready at ${url}`);});

Blogs

Buchempfehlungen