Skip to main content

Graphql | C#

  • Graphql

  • Schema - Descreve a funcionalidade disponível para os clientes que se conectam a ele.

  • Tipos - Tudo em GraphQL é um tipo,e, um tipo pode ser entendido como uma entidade em seu banco de dados (relacional ou não relacional). Os tipos forma um schema, e, o GraphQL possui 2 tipos padrão: RootQuery e RootMutation.

  • Query e Mutations - O type Query serve para definir o contrato de consulta de dados e O type Mutation serve para definir o contrato de manipulação de dados

  • Resolver - Resolvers são funções responsáveis revolver um pedido e devolver o dado solicitado. As funções recebem três argumentos : root , argumentos e contexto.

Quando usar?

A decisão de usar GraphQL em vez de outras abordagens de API, como REST, depende de vários fatores relacionados às necessidades específicas do seu projeto, à complexidade dos dados que você está manipulando e às expectativas dos consumidores da sua API. Aqui estão algumas situações em que o GraphQL pode ser particularmente benéfico:

1. Quando Você Precisa de Flexibilidade na Consulta de Dados

GraphQL permite que os consumidores da API solicitem exatamente os dados de que precisam, nem mais nem menos. Isso pode ser particularmente útil em aplicações com requisitos de dados variáveis ou quando a eficiência da largura de banda é uma preocupação.

2. Para Aplicações com Dados Interconectados Complexos

Se a sua aplicação lida com dados altamente interconectados ou relacionados (por exemplo, redes sociais, serviços de conteúdo complexo), o GraphQL pode simplificar as consultas que cruzam vários recursos e relações.

3. Desenvolvimento de Aplicações com Múltiplos Clientes (Frontends)

Quando você está construindo backends que servirão a múltiplos clientes (web, mobile, dispositivos IoT, etc.), o GraphQL permite que cada cliente busque dados adaptados às suas necessidades específicas sem necessidade de endpoints dedicados para cada versão do cliente.

4. Necessidade de Minimizar as Solicitações de Rede

Em ambientes onde o número de solicitações de rede deve ser minimizado (por exemplo, em aplicações móveis com conexões lentas ou limitadas), o GraphQL permite a obtenção de todos os dados necessários em uma única viagem de rede.

5. Desenvolvimento Iterativo Rápido

GraphQL pode acelerar o desenvolvimento e a iteração de produtos, pois permite a modificação dos esquemas de dados sem afetar as consultas existentes. Isso significa que o backend pode evoluir sem necessariamente quebrar os clientes ou exigir sua atualização imediata.

Quando Pode Não Ser Ideal Usar GraphQL

Apesar de suas muitas vantagens, há cenários em que o GraphQL pode não ser a melhor escolha:

  • Para APIs Simples com Poucos Endpoints: Se a sua API é relativamente simples e não se beneficia da flexibilidade de consulta do GraphQL, a complexidade adicional pode não ser justificada.
  • Quando a Caching na Borda é Crucial: O caching em nível de HTTP é mais direto com APIs RESTful, devido à natureza das operações GET padronizadas. GraphQL pode exigir estratégias de caching mais complexas e personalizadas.
  • Se Você Precisa de Padrões de API Estritamente Definidos: Em alguns ambientes, especialmente em grandes organizações ou indústrias regulamentadas, pode haver uma necessidade de aderir a padrões de API estritos ou a práticas de versionamento que são mais diretamente suportadas por APIs RESTful.

Anotações

  • Todos as classes de entrada e saída devem ser do tipo do graphql, caso não foi no playground será retornado erros