Mutations no GraphQL, com exemplos que funcionam

Mutations no GraphQL

Mutations no GraphQL: sintaxe, variáveis e input types | We.Inc

Escreva mutations GraphQL que criam, atualizam e apagam dados: sintaxe da operação, $variables, input object types, o que retornar e como ficam erros e sucesso parcial.

Uma mutation GraphQL é a operação que você envia para alterar dados. Ela começa com a palavra-chave mutation, chama um campo do tipo Mutation do schema, passa argumentos, geralmente um input object guardado em uma $variable, e seleciona quais campos do resultado devolver. Os campos de mutation de nível superior rodam um depois do outro, nunca em paralelo.

A sintaxe da mutation em partes

Use o gerador abaixo para ver uma mutation completa para uma pequena lista de tarefas: a operação, o JSON de variáveis que o seu código enviaria junto e uma resposta típica. Digite o título de uma tarefa e veja as variáveis se atualizarem, para copiar uma requisição pronta para rodar contra um schema compatível.

Perguntas frequentes

Qual é a diferença entre uma query e uma mutation?

As duas usam a mesma sintaxe e as duas podem retornar dados. Por convenção, queries só leem e mutations escrevem. A regra de execução também muda: campos de query podem ser resolvidos em paralelo, enquanto campos de mutation de nível superior rodam em série.

Por que usar um input type em vez de argumentos simples?

Um input object agrupa valores relacionados em um único argumento tipado, então a assinatura da mutation fica curta e você pode adicionar campos opcionais depois sem mudar cada chamada.

Dá para enviar uma mutation com uma requisição GET?

Não. As orientações de GraphQL over HTTP permitem que servidores aceitem GET só para operações de query. Mutations vão como POST, o que também mantém as escritas longe dos caches do navegador e de CDN.

Uma mutation com vários campos é atômica?

Não. O graphql.org observa que a execução em série não é uma transação de banco de dados. Se o segundo campo falhar, a alteração do primeiro permanece, e a resposta traz dados de um e um erro do outro.

O que uma mutation de exclusão deve retornar?

A spec deixa isso com você, mas o campo ainda precisa de um tipo de saída. Escolhas comuns são o id do objeto apagado, o próprio objeto removido ou um tipo de payload com o id e uma flag de sucesso.

Anatomia de uma mutation

Variáveis e input objects

Erros em uma escrita

O schema por trás dos exemplos

Tipo Mutation e input types

Input types usam a palavra-chave input. TaskPatch não tem campos obrigatórios, então uma atualização pode enviar só o que mudou.

Enviando a partir do JavaScript

Faça POST da mutation com fetch

O documento e as variáveis viajam como duas chaves de um único corpo JSON. Verifique errors mesmo quando o status é 200.

Duas escritas em uma operação

Aliases permitem rodar o mesmo campo duas vezes. O segundo só roda depois que o primeiro termina, mas uma falha nele não desfaz o primeiro.

Criar

O input type agrupa os campos da nova tarefa. O selection set pede o id que o servidor atribuiu.

Atualizar

O id diz qual tarefa alterar e o input traz só os campos que mudam.

Apagar

Não sobra nada para selecionar em uma tarefa removida, então este schema retorna o id apagado como um escalar ID simples.

Gerador de mutations

Escolha uma mutation

Título da tarefa

Mutation

Variáveis (JSON)

Resposta de exemplo

Copiar mutation

Copiar variáveis

Apagar precisa só do id, então o título não é enviado.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site