Fragments do GraphQL, montados ao vivo

Fragments do GraphQL

Fragments do GraphQL: nomeados, inline e type conditions | We.Inc

Monte fragments do GraphQL em um construtor de queries ao vivo: fragments nomeados para reutilizar, inline fragments para unions e interfaces, type conditions, __typename e variáveis.

Um fragment do GraphQL é um conjunto nomeado e reutilizável de campos para um tipo, escrito como fragment Name on Type e incluído em uma query com ...Name. Um inline fragment, escrito ... on Type, não tem nome e seleciona campos só quando o resultado é aquele tipo concreto, que é como você consulta unions e interfaces.

Formas de fragment

Marque os campos que quiser no construtor e ele escreve a query para você, uma vez com um fragment nomeado e outra com os campos digitados direto, para você ver que as duas pedem os mesmos dados. Ative a opção de resultados de busca para adicionar inline fragments sobre uma union.

Perguntas frequentes

Fragments deixam as respostas menores?

Não. Um fragment é uma ajuda para escrever a query. O servidor o expande, e a resposta fica exatamente como se você tivesse digitado os campos. Se dois spreads selecionam o mesmo campo, ele aparece uma vez.

Quando preciso usar um inline fragment?

Quando um campo retorna uma union ou uma interface e você precisa de campos que só alguns tipos membros têm. O graphql.org mostra isso com um hero que pode ser um Droid com primaryFunction ou um Human com height.

Um fragment pode ser usado em outro tipo?

Só onde ele pode se aplicar. Um fragment sobre uma interface pode ser usado com spread dentro de qualquer tipo de objeto que a implemente, mas um fragment sobre User usado dentro de uma seleção de Post falha na validação.

Onde ficam os fragments no documento?

No nível mais alto do documento, ao lado das operações, em qualquer ordem. Todo fragment definido precisa ser usado, ou o servidor rejeita o documento como inválido.

Fragments nomeados para reutilizar

Inline fragments e type conditions

Schema usado pelo construtor

Uma union para resultados de busca

SearchResult pode ser um User ou um Photo, então uma seleção sobre ele precisa de inline fragments para alcançar os campos de qualquer um dos membros.

Lendo uma resposta de union

O que a busca retorna

Cada item traz só os campos do próprio ramo, mais o __typename.

Ramificando pelo __typename

O nome do tipo é a forma segura de diferenciar os membros; verificar a presença de um campo pode quebrar quando um tipo passar a tê-lo.

Construtor de queries com fragments

Campos de User a selecionar

Usar um fragment nomeado (UserCard)

Adicionar resultados de busca (union com inline fragments)

Query

Copiar query

{n} campo(s) selecionado(s), {v} linha(s) de query

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

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site