O GraphQL foi desenvolvido pelo Facebook em 2012 para potencializar seus aplicativos móveis. Desde o open-sourcing do GraphQL em 2015, ganhou muita popularidade e agora é usado por muitas equipes de desenvolvimento, incluindo gigantes como GitHub, Twitter ou Airbnb. Por que isso acontece? E o que exatamente é um GraphQL? Vamos dar uma olhada.

Logotipo do GraphQL

O que é GraphQL

O GraphQL é uma linguagem de consulta para APIs e um tempo de execução para atender a essas consultas com os dados existentes. O GraphQL fornece uma descrição completa e compreensível dos dados em sua API e dá aos clientes a capacidade de solicitar ao servidor o que é exatamente necessário, o que resultará em uma resposta contendo apenas os dados solicitados, nada mais.

A ideia do GraphQL surgiu na época do boom dos dispositivos móveis e seu principal objetivo era solucionar muitas das deficiências e ineficiências que os desenvolvedores de aplicativos móveis do Facebook enfrentavam ao trabalhar com a API REST.

Equipe do GraphQL no Facebook

Fonte: GraphQL: O documentário

Obtenção de dados em GraphQL vs. REST

Na implementação típica de REST, o cliente coleta dados acessando vários endpoints, ou seja, o senhor primeiro chamaria o endpoint para buscar os dados iniciais do usuário e, em seguida, faria uma chamada posterior para buscar todas as suas propriedades. O GraphQL lida com isso de forma diferente. A especificação do que pode ser consultado fica no lado do cliente e, ao consultar o servidor GraphQL para obter dados específicos, ele responderá com os dados exatos que foram solicitados, o que significa menos bits transferidos pelo fio.

GraphQL vs REST

Linguagem de definição de esquema (SDL)

O GraphQL é o núcleo de qualquer projeto GraphQL. Aninhado em um servidor GraphQL, ele define todas as funcionalidades disponíveis para o cliente GraphQL. O elemento mais básico de cada esquema é um type que permite estabelecer relações entre diferentes elementos do esquema; definir operações GraphQL permitidas a serem executadas no servidor e muito mais. Para facilitar a compreensão da operação que um servidor pode executar, o GraphQL define uma sintaxe de esquema universal conhecida como Schema Definition Language (SDL) (Linguagem de definição de esquema). Os elementos mais básicos de um esquema GraphQL são tipos de objetos. Eles representam um objeto que o senhor pode buscar no servidor GraphQL com os campos disponíveis, ou seja

type Movie {
   title: String
   Director: Director
}

type Director {
   name: String
   movies: [Movie]
}

Consulta é uma operação básica de busca no GraphQL para solicitar dados do servidor GraphQL

type Query{
    getMovies: [Movie]
    getDirectors: [Director]
}

Mutação é uma das operações básicas do GraphQL que permite ao senhor manipular os dados (criar, modificar ou excluir):

type Mutation {
   addMovie(title: String, director: String) : Movie
}

Se quiser ler mais sobre a SDL, o site oficial da site do GraphQL é um caminho a seguir.

Primeiros passos com o GraphQL

Se o senhor quiser saber mais sobre o GraphQL, a melhor maneira é experimentar por conta própria. Acredito que o Editor GraphQL é uma opção a ser considerada. É uma ferramenta útil quando se dá os primeiros passos com o GraphQL, pois é possível trabalhar com o esquema do GraphQL em uma interface visual (é claro que também é possível escrever código). O GraphQL Editor oferece muitos recursos úteis que o ajudarão a garantir que sua API GraphQL seja bem desenvolvida.

Os usuários iniciantes no GraphQL acharão muito útil um tutorial interativo incorporado. Seis tarefas curtas o informarão sobre a sintaxe SDL, como:

permitindo que o senhor comece a trabalhar no seu primeiro esquema GraphQL. Clique em neste link se quiser, e o senhor será redirecionado para o tutorial do GraphQL Interactive. Editor GraphQL oferece mais facilidade:

1. Criação de esquemas – O GraphQL Editor é um ambiente para o desenvolvimento do GraphQL, no qual o usuário pode criar um protótipo do seu esquema com nós visuais, validá-lo e validá-lo. Paralelamente, o código tradicional é criado para que o senhor possa fazer as duas coisas.

2. Gerenciamento – O editor fornece automação do seu projeto GraphQL, pois o senhor pode importar um esquema de produção já existente, editá-lo e gerar um backend falso. Dessa forma, o senhor pode testar novos recursos mesmo sem um backend de produção totalmente operacional!

3. Bibliotecas de preenchimento automático para front-end – Além disso, se JavaScript/TypeScript estiver entre suas linguagens preferidas, você poderá exportar bibliotecas de autocompletar para seu projeto, que são alimentadas por graphql-zeus.

4. Colaboração – A representação visual de um esquema melhora a comunicação entre desenvolvedores e pessoas com funções comerciais na equipe.

Conclusão

O GraphQL, monitorado por sua biblioteca de clientes mais popular, Apollo, continua a explodir em popularidade. O GraphQL será uma força técnica a ser considerada em 2019. Muitas pessoas do setor acreditam que 2019/2020 será o momento da adoção maciça do GraphQL. Embora o REST ainda seja uma tecnologia mais madura e popular, se o senhor não experimentar o GraphQL, estará cometendo um erro. Acredito que é uma abordagem muito interessante e promissora para a comunicação cliente-servidor.

Tomek Poniatowicz

Sobre Tomek Poniatowicz

Explorador digital & entusiasta de GraphQL. Jogando Magic the Gathering & assando pizza caseira entre as postagens do blog.