GraphQL - Introdução

GraphQL é uma tecnologia de código aberto do lado do servidor que foi desenvolvida pelo Facebook para otimizar chamadas de API RESTful. É um mecanismo de execução e uma linguagem de consulta de dados. Neste capítulo, discutimos sobre as vantagens de usar GraphQL.

Por que GraphQL

As APIs RESTful seguem uma abordagem orientada a recursos clara e bem estruturada. No entanto, quando os dados ficam mais complexos, as rotas ficam mais longas. Às vezes, não é possível buscar dados com uma única solicitação. É aqui que o GraphQL se torna útil. GraphQL estrutura os dados na forma de um gráfico com sua poderosa sintaxe de consulta para percorrer, recuperar e modificar dados.

A seguir estão as vantagens de usar a linguagem de consulta GraphQL -

Peça o que você quer - e obtenha

Envie uma consulta GraphQL para sua API e obtenha exatamente o que você precisa. As consultas GraphQL sempre retornam resultados previsíveis. Os aplicativos que usam GraphQL são rápidos e estáveis. Ao contrário dos serviços Restful, esses aplicativos podem restringir os dados que devem ser buscados no servidor.

O exemplo a seguir ajudará você a entender isso melhor -

Vamos considerar um objeto de negócio Student com os atributos id, firstName, lastName e collegeName . Suponha que um aplicativo móvel precise buscar apenas o firstName e id . Se projetarmos um endpoint REST como / api / v1 / students , ele acabará buscando dados para todos os campos de um objeto de aluno . Isso significa que os dados são recuperados pelo serviço RESTful. Este problema pode ser resolvido usando GraphQL.

Considere a consulta GraphQL fornecida abaixo -

{
   students {
      id
      firstName
   }
}

Isso retornará valores apenas para os campos id e firstname. A consulta não buscará valores para outros atributos do objeto de aluno. A resposta da consulta ilustrada acima é mostrada abaixo -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim"
         },
         {
            "id": "S1002",
            "firstName": "Kannan"
         }
      ]
   }
}

Obtenha muitos recursos em uma única solicitação

As consultas GraphQL ajudam a recuperar facilmente os objetos de negócios associados, enquanto as APIs REST típicas requerem o carregamento de vários URLs. As APIs GraphQL buscam todos os dados de que seu aplicativo precisa em uma única solicitação. Os aplicativos que usam GraphQL podem ser rápidos, mesmo em conexões de rede móvel lentas.

Vamos considerar mais um objeto de negócio, a faculdade que possui os atributos: nome e localização. O objeto de negócios Aluno tem um relacionamento de associação com o objeto Faculdade. Se fôssemos usar uma API REST para buscar os detalhes dos alunos e de sua faculdade, acabaríamos fazendo duas solicitações ao servidor como / api / v1 / students e / api / v1 / colleges . Isso levará à sub-busca de dados com cada solicitação. Portanto, os aplicativos móveis são forçados a fazer várias chamadas para o servidor para obter os dados desejados.

No entanto, o aplicativo móvel pode buscar detalhes para objetos Student e College em uma única solicitação usando GraphQL.

A seguir está uma consulta GraphQL para buscar dados -

{
   students{
      id
      firstName
      lastName
      college{
         name
         location
      }
   }
}

O resultado da consulta acima contém exatamente os campos que solicitamos, conforme mostrado abaixo -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim",
            "lastName": "Mohammad",
            "college": {
               "name": "CUSAT",
               "location": "Kerala"
            }
         },
         
         {
            "id": "S1002",
            "firstName": "Kannan",
            "lastName": "Sudhakaran",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         },
         
         {
            "id": "S1003",
            "firstName": "Kiran",
            "lastName": "Panigrahi",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         }
      ]
   }
}

Descreva o que é possível com um sistema de tipos

GraphQL é fortemente tipado e as consultas são baseadas em campos e seus tipos de dados associados. Se houver incompatibilidade de tipo em uma consulta GraphQL, os aplicativos de servidor retornarão mensagens de erro claras e úteis. Isso ajuda na depuração suave e na detecção fácil de bugs pelos aplicativos clientes. GraphQL também fornece bibliotecas do lado do cliente que podem ajudar a reduzir a conversão e análise explícita de dados.

Um exemplo dos tipos de dados Student e College é fornecido abaixo -

type Query {
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}

type College {
   id:ID!
   name:String
   location:String
   rating:Float
   students:[Student]
}

Mova-se mais rápido com ferramentas de desenvolvedor poderosas

GraphQL fornece ferramentas ricas de desenvolvedor para documentação e teste de consultas. GraphiQL é uma excelente ferramenta que gera documentação da consulta e seu esquema. Ele também fornece um editor de consulta para testar APIs GraphQL e capacidade de preenchimento de código inteligente durante a construção de consultas.