Mutation GraphQL, con esempi funzionanti

Mutation GraphQL

Mutation GraphQL: sintassi, variabili e input type | We.Inc

Scrivi mutation GraphQL che creano, aggiornano ed eliminano dati: sintassi dell'operazione, $variables, input object type, cosa restituire e come appaiono errori e successo parziale.

Una mutation GraphQL è l'operazione che invii per modificare i dati. Inizia con la parola chiave mutation, chiama un campo del tipo Mutation dello schema, passa degli argomenti, di solito un unico oggetto input contenuto in una $variable, e seleziona quali campi del risultato restituire. I campi mutation di primo livello vengono eseguiti uno dopo l'altro, mai in parallelo.

La sintassi di una mutation, pezzo per pezzo

Usa il builder qui sotto per vedere una mutation completa per una piccola lista di attività: l'operazione, il JSON delle variabili che il tuo codice invierebbe insieme e una risposta tipica. Scrivi il titolo di un'attività e guarda le variabili aggiornarsi, così puoi copiare una richiesta pronta da eseguire su uno schema corrispondente.

Domande frequenti

Qual è la differenza tra una query e una mutation?

Entrambe usano la stessa sintassi ed entrambe possono restituire dati. Per convenzione le query leggono soltanto e le mutation scrivono. Cambia anche la regola di esecuzione: i campi di una query possono essere risolti in parallelo, mentre i campi mutation di primo livello vengono eseguiti in serie.

Perché usare un input type invece di semplici argomenti?

Un oggetto input raggruppa valori correlati in un unico argomento tipizzato, così la firma della mutation resta corta e puoi aggiungere campi opzionali in seguito senza cambiare ogni chiamante.

Posso inviare una mutation con una richiesta GET?

No. Le linee guida di GraphQL over HTTP consentono ai server di accettare GET solo per le operazioni query. Le mutation vanno inviate come POST, che tiene anche le scritture lontane dalle cache del browser e delle CDN.

Una mutation con più campi è atomica?

No. graphql.org fa notare che l'esecuzione in serie non è una transazione di database. Se il secondo campo fallisce, la modifica del primo resta, e la risposta contiene i dati di uno e un errore per l'altro.

Cosa dovrebbe restituire una mutation di eliminazione?

La specifica lo lascia decidere a te, ma il campo ha comunque bisogno di un tipo di output. Le scelte comuni sono l'id dell'oggetto eliminato, l'oggetto rimosso stesso, oppure un tipo payload con l'id e un flag di successo.

Anatomia di una mutation

Variabili e oggetti input

Errori da una scrittura

Lo schema dietro gli esempi

Tipo Mutation e input type

Gli input type usano la parola chiave input. TaskPatch non ha campi obbligatori, quindi un aggiornamento può inviare solo ciò che è cambiato.

Inviarla da JavaScript

Invia la mutation in POST con fetch

Il documento e le variabili viaggiano come due chiavi di un unico body JSON. Controlla errors anche quando lo status è 200.

Due scritture in una sola operazione

Gli alias permettono di eseguire lo stesso campo due volte. Il secondo parte solo quando il primo è finito, ma un suo errore non annulla il primo.

Creazione

L'input type raggruppa i campi della nuova attività. Il selection set chiede l'id assegnato dal server.

Aggiornamento

L'id indica quale attività modificare e l'input contiene solo i campi che cambiano.

Eliminazione

Non resta nulla da selezionare su un'attività rimossa, quindi questo schema restituisce l'id eliminato come semplice scalare ID.

Builder di mutation

Scegli una mutation

Titolo dell'attività

Mutation

Variabili (JSON)

Risposta di esempio

Copia mutation

Copia variabili

L'eliminazione richiede solo l'id, quindi il titolo non viene inviato.

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito