Questão de Programação — Programação de front end — FGV 2023
Programação›Programação de front end
Código
fg065349
Banca
FGV
Órgão
PGM - Niterói
Ano
2023
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Observe o trecho do seguinte código escrito na linguagem GraphQL que utiliza um tipo de operação para inserir dados.Em GraphQL, o tipo de operação utilizada para inserir, atualizar ou apagar dados é o:
Aquery;
Bdirective;
Cmutations;
Dintrospection;
Esubscriptions.
Revelar gabarito e comentário▾
GabaritoC — mutations;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
GraphQL: operações de leitura e escrita
Gabarito: letra C. Em GraphQL, o tipo de operação utilizado para inserir, atualizar ou apagar dados é a mutation (mutação). As queries são usadas para consultas (leitura), enquanto as mutations são o equivalente às operações de escrita (POST, PUT, DELETE) em APIs REST. Essa é a distinção central que a questão explora.
GraphQL é uma linguagem de consulta para APIs, criada pelo Facebook, que permite ao cliente solicitar exatamente os dados de que precisa. Diferentemente de REST, onde cada recurso tem um endpoint específico, o GraphQL expõe um único endpoint e o cliente define a estrutura da resposta. Para isso, a linguagem define tipos de operação que indicam a intenção da requisição: query (leitura), mutation (escrita) e subscription (assinatura de eventos em tempo real).
A mutation é o tipo de operação que modifica dados no servidor. Ela é usada para criar, atualizar ou deletar registros. Na prática, uma mutation é declarada com a palavra-chave mutation, seguida do nome da operação e dos campos que serão alterados. Por exemplo, para adicionar um novo usuário, escreveríamos algo como mutation { addUser(name: "João") { id } }. O servidor processa a mutation, executa a alteração e retorna os dados solicitados na resposta.
A confusão mais comum é entre query e mutation. Enquanto a query é usada para ler dados (equivalente ao GET), a mutation é usada para escrever (equivalente ao POST, PUT, DELETE). A banca explora exatamente essa troca: o candidato que sabe que GraphQL tem operações de leitura e escrita pode marcar "query" por engano, achando que é o termo genérico para qualquer operação. Mas o termo correto para escrita é mutation.
Outros tipos de operação que aparecem nas alternativas: directive é um recurso que permite adicionar comportamentos condicionais às queries (como @include e @skip), não é um tipo de operação. Introspection é um recurso que permite consultar o schema da API, ou seja, descobrir quais tipos e campos estão disponíveis. Subscription é usada para receber atualizações em tempo real via WebSocket, quando o servidor envia dados ao cliente após uma mudança.
Guarde a correspondência com REST: query = GET, mutation = POST/PUT/DELETE, subscription = WebSocket. Essa analogia é o critério decisivo para separar as alternativas.
GraphQL: tipos de operação: query (Leitura (GET)); mutation (Escrita (POST/PUT/DELETE), Inserir, atualizar, apagar); subscription (Tempo real (WebSocket)); Outros recursos (directive (@include, @skip), introspection (consulta ao schema))
Alternativa A — ❌ Incorreta
query é o tipo de operação para leitura de dados, não para escrita. Em GraphQL, uma query é usada para buscar informações, como listar usuários ou obter detalhes de um produto. A banca coloca "query" como distrator porque é o tipo mais conhecido e o candidato pode pensar que é o termo genérico para qualquer operação. Mas a questão pede explicitamente "inserir, atualizar ou apagar", que é o papel da mutation.
Alternativa B — ❌ Incorreta
directive não é um tipo de operação, mas um recurso de linguagem que permite modificar a execução de uma query ou mutation de forma condicional. Diretivas como @include(if: ...) e @skip(if: ...) controlam quais campos são incluídos na resposta. Elas não realizam operações de escrita nem de leitura por si só.
Alternativa C — ✅ Correta ⟵ GABARITO
mutation é o tipo de operação usado para inserir, atualizar ou apagar dados. É o equivalente aos métodos POST, PUT e DELETE do REST. A palavra-chave mutation no código GraphQL indica que a operação irá modificar o estado do servidor. É exatamente o que o enunciado descreve.
Alternativa D — ❌ Incorreta
introspection é um recurso que permite ao cliente consultar o schema da API, ou seja, descobrir quais tipos, campos e operações estão disponíveis. Não é um tipo de operação para manipular dados, mas uma ferramenta de descoberta e documentação.
Alternativa E — ❌ Incorreta
subscription é o tipo de operação usado para assinar eventos em tempo real. Ela mantém uma conexão persistente (geralmente via WebSocket) e o servidor envia atualizações ao cliente quando ocorre uma mudança. Não é usada para inserir, atualizar ou apagar dados diretamente, mas para receber notificações dessas mudanças.
NÃO CAIA NESSA!
A banca explora a confusão entre query e mutation. Muitos candidatos sabem que GraphQL tem operações de leitura e escrita, mas podem marcar "query" por ser o termo mais comum. Lembre-se: query = leitura, mutation = escrita. Se a questão falar em "inserir, atualizar ou apagar", a resposta é sempre mutation.
PEGA ESSA DICA!
Associe os tipos de operação do GraphQL aos métodos HTTP do REST: query → GET, mutation → POST/PUT/DELETE, subscription → WebSocket. Essa analogia resolve a maioria das questões sobre o tema.