Pular para o conteúdo principal

Questão de Programação — Programação de front end — FGV 2023

ProgramaçãoProgramaçã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.Imagem associada para resolução da questãoEm GraphQL, o tipo de operação utilizada para inserir, atualizar ou apagar dados é o:
  1. Aquery;
  2. Bdirective;
  3. Cmutations;
  4. Dintrospection;
  5. 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.

1query
Leitura (GET)
2mutation
Escrita (POST/PUT/DELETE)
Inserir, atualizar, apagar
3subscription
Tempo real (WebSocket)
4Outros recursos
directive (@include, @skip)
introspection (consulta ao schema)
GraphQL: tipos de operação
LEVELsoulevel.com.br
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.

Gabarito: letra C

Link permanente: /questoes/fg065349