GraphQL-Mutations mit funktionierenden Beispielen

GraphQL-Mutations

GraphQL-Mutations: Syntax, Variablen und Input-Typen | We.Inc

Schreib GraphQL-Mutations, die Daten anlegen, ändern und löschen: Operationssyntax, $variables, Input-Objekttypen, was du zurückgibst und wie Fehler und Teilerfolge aussehen.

Eine GraphQL-Mutation ist die Operation, die du sendest, um Daten zu ändern. Sie beginnt mit dem Schlüsselwort mutation, ruft ein Feld des Mutation-Typs im Schema auf, übergibt Argumente, meist ein einzelnes Input-Objekt in einer $variable, und wählt aus, welche Felder des Ergebnisses zurückkommen sollen. Mutation-Felder auf oberster Ebene laufen nacheinander, nie parallel.

Mutation-Syntax in Einzelteilen

Mit dem Builder unten siehst du eine vollständige Mutation für eine kleine Aufgabenliste: die Operation, das Variablen-JSON, das dein Code mitsenden würde, und eine typische Antwort. Gib einen Aufgabentitel ein und beobachte, wie sich die Variablen aktualisieren. So kannst du eine Anfrage kopieren, die gegen ein passendes Schema sofort lauffähig ist.

Häufige Fragen

Was ist der Unterschied zwischen einer Query und einer Mutation?

Beide nutzen dieselbe Syntax und beide können Daten zurückgeben. Per Konvention lesen Queries nur, und Mutations schreiben. Auch die Ausführungsregel unterscheidet sich: Query-Felder dürfen parallel aufgelöst werden, während Mutation-Felder auf oberster Ebene nacheinander laufen.

Warum einen Input-Typ statt einfacher Argumente verwenden?

Ein Input-Objekt bündelt zusammengehörige Werte in einem typisierten Argument. So bleibt die Signatur der Mutation kurz, und du kannst später optionale Felder ergänzen, ohne jeden Aufrufer zu ändern.

Kann ich eine Mutation per GET-Request senden?

Nein. Die Vorgaben zu GraphQL over HTTP erlauben Servern GET nur für Query-Operationen. Mutations gehen als POST, was Schreibvorgänge außerdem von Browser- und CDN-Caches fernhält.

Ist eine Mutation mit mehreren Feldern atomar?

Nein. graphql.org weist darauf hin, dass serielle Ausführung keine Datenbanktransaktion ist. Schlägt das zweite Feld fehl, bleibt die Änderung des ersten bestehen, und die Antwort enthält Daten für das eine und einen Fehler für das andere.

Was sollte eine Delete-Mutation zurückgeben?

Die Spezifikation überlässt das dir, aber das Feld braucht trotzdem einen Ausgabetyp. Üblich sind die id des gelöschten Objekts, das entfernte Objekt selbst oder ein Payload-Typ mit der id und einem Erfolgs-Flag.

Aufbau einer Mutation

Variablen und Input-Objekte

Fehler bei einem Schreibvorgang

Das Schema hinter den Beispielen

Mutation-Typ und Input-Typen

Input-Typen nutzen das Schlüsselwort input. TaskPatch hat keine Pflichtfelder, ein Update kann also nur das senden, was sich geändert hat.

Aus JavaScript senden

Die Mutation mit fetch per POST senden

Dokument und Variablen reisen als zwei Schlüssel eines einzigen JSON-Bodys. Prüfe errors auch dann, wenn der Status 200 ist.

Zwei Schreibvorgänge in einer Operation

Mit Aliasen lässt sich dasselbe Feld zweimal ausführen. Das zweite läuft erst, wenn das erste fertig ist, aber ein Fehler darin macht das erste nicht rückgängig.

Anlegen

Der Input-Typ bündelt die Felder der neuen Aufgabe. Das Selection Set fragt nach der id, die der Server vergeben hat.

Ändern

Die id gibt an, welche Aufgabe geändert wird, und der Input enthält nur die Felder, die sich ändern.

Löschen

Bei einer entfernten Aufgabe gibt es nichts mehr auszuwählen, daher gibt dieses Schema die gelöschte id als einfachen ID-Skalar zurück.

Mutation-Builder

Mutation auswählen

Aufgabentitel

Mutation

Variablen (JSON)

Beispielantwort

Mutation kopieren

Variablen kopieren

Löschen braucht nur die id, daher wird der Titel nicht gesendet.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap