GraphQL é a sigla de Graph Query Language, que podemos traduzir como Linguagem de Consulta de Dados em Grafos. Relacionada ao desenvolvimento de APIs, vem ganhando cada vez novos adeptos no mundo da comunicação entre os sistemas.
Desenvolvida pelo Facebook em 2012, muita gente a conhece simplesmente como a linguagem de consulta do Facebook. Sua principal função é facilitar a entrega de dados para as aplicações web e mobile.
Ou seja: deixar muito mais fácil o processo de entrega de informações no lado do cliente, respeitando a ordem na requisição.
Neste conteúdo, explicaremos mais sobre o GraphQL, seus diferenciais e exemplo de uso. Boa leitura!
O que é GraphQL?
Para muitos, o GraphQL é uma forma de desenvolver uma API orientada a tipos. Porém, o conceito apresentado no seu site oficial é um pouco diferente.
Lá, vemos que se trata de uma linguagem de consulta para APIs. Ele fornece uma descrição completa e sucinta dos dados em sua API, oferecendo a possibilidade de solicitar exatamente o que precisa – e nada além disso.
As consultas do GraphQL sempre retornam com resultados previsíveis. Inclusive, os aplicativos que utilizam essa linguagem são mais rápidos e estáveis, já que são eles que controlam os dados resultantes das consultas.
É importante reiterar que o GraphQL não é um banco de dados e nem precisa de um para funcionar. Também não é um framework, nem é exclusivo para HTTP e APIs.
Quais os diferenciais do GraphQL?
O grande benefício do GraphQL é que permite que uma API possa retornar com dados claros e úteis, tudo de acordo com a real necessidade. Para quem consome as APIs, isso é essencial. Além disso, ele performa melhor que as APIs mais tradicionais.
À primeira vista, é normal confundir o GraphQL com o JSON. Porém, o descritivo do modelo de dados é muito parecido com especificações de objetos, a partir da chamada orientação a objetos.
Essa relação não ocorre apenas por conta dos atributos, mas porque ambas utilizam o conceito de herança usando interfaces.
Isso acaba sendo outro diferencial importante, pois a programação orientada a objetos é difundida em praticamente todas as áreas do desenvolvimento de sistemas.
Outra vantagem do GraphQL é a possibilidade de adicionar novos campos e tipos a sua API sem afetar as consultas existentes. Inclusive, os campos desatualizados podem ser descontinuados e ocultados das ferramentas.
Utilizando uma única versão, as APIs do GraphQL oferecem aos aplicativos o acesso contínuo a novos recursos, além de incentivarem códigos de servidor mais limpos e atuais.
Modelo de dados usando a GraphQL
Para entender com mais clareza o funcionamento da GraphQL, vamos dar um exemplo bem simples que, inclusive, está disposto na própria página da linguagem.
Primeiro, você descreve como quer que seja a estrutura dos seus dados. Neste caso, é um tipo conhecido como “Project”, contendo 3 atributos:
- Name;
- Tagline;
- Contributors.
A partir daí, já é possível criar uma consulta com os dados que você precisa. Olhando rapidamente para o código, é possível perceber que a consulta é para o Project com nome “GraphQL” e que retornará somente o atributo “tagline”.
GraphQL x REST: qual o melhor?
Uma das primeiras coisas que vem à mente quando vemos o GraphQL é questionar se o REST não faz exatamente isso.
Primeiro, vamos às definições. REST é um estilo de arquitetura de software que permite que seja definido um conjunto de restrições para serem utilizadas para a criação de web services.
Logo, seu objetivo primário é definir características fundamentais para que aplicações web sejam construídas seguindo as boas práticas.
O REST também realiza a busca de informações, mas não da mesma maneira com que o GraphQL faz. Além disso, o REST por si só não consegue filtrar os dados da mesma forma.
Apesar disso, o REST apresenta 3 vantagens importantes em relação ao GraphQL. São elas:
- Sua URL acaba ficando mais complexa e com muito Nesting (alinhamento);
- Nele, existe o Overfetching, ou seja, você obtém muito mais dados que realmente são necessários;
- Realiza muito mais requisições HTTP quando a estrutura de dados é um pouco mais complexa.
De qualquer forma, o GraphQL foi desenvolvido para lidar com necessidades de maior flexibilidade e eficiência nas consultas. Logo, resolve muitas das deficiências e insuficiências que os desenvolvedores experimentam ao interagir com as APIs REST.
Deu para entender um pouco melhor sobre o GraphQL e a importância que ele tem nos dias atuais? Caso queira se aprofundar ainda mais, dá um pulo no canal Código Fonte TV do YouTube, que tem um vídeo super explicativo sobre o assunto!
Assine também a nossa newsletter para ler sempre em primeira mão os conteúdos que publicamos no nosso blog.