Eae gente bonita beleza? Recentemente comecei a olhar um pouco para os lados para aprender sobre outras formas de comunicação no backend além do famoso REST e acabei chegando no GraphQL e hoje vou falar um pouco mais sobre ele.
Tabela de conteúdo
O que é GraphQL
Bom, o GraphQL é uma Query Language, ou melhor dizendo uma linguagem de consulta desenvolvida pelo Facebook. A ideia do GraphQL é poder dar uma autonomia maior para quem vai consumir as API's, pois você pode escrever a consulta da forma que achar melhor para a ocasião, evitando que fique preso a diversas chamadas REST.
Como funciona
Eu sempre posterguei pesquisar o que é GraphQL porque pensava que era um bicho de 7 cabeças e aqui estou eu enganado sobre isso. Bom basicamente com o GraphQL você pode criar modelos, relações e também mutations.
Vamos um passo de cada vez vou usar o exemplo do próprio site do GraphQL para isso.
Abaixo temos um exemplo de descrição de dados e também de uma relação onde existe a entidade Project
com as propriedades name
, tagline
e contributors
que tem vários Users
.
type Project {
name: String
tagline: String
contributors: [User]
}
Como eu uso isso?
É bem mais simples do que se imagina, a sintaxe do GraphQL se assimila muito com a sintaxe do JSON, o que facilita muito o seu entendimento.
Abaixo temos um exemplo de uma consulta. Nós vamos consultar a tabela project
e vamos pesquisar pelo parâmetro name
sendo igual a "GraphQL" e agora vem o brilho da coisa, nós pegamos apenas aquilo que realmente precisamos e no caso abaixo vamos pegar apenas o que queremos nesse o valor de tagline
.
{
project(name: "GraphQL") {
tagline
}
}
E como mágica temos o resultado abaixo:
{
"project": {
"tagline": "A query language for APIs"
}
}
Fácil né? Agora vou te mostrar um exemplo de uma query onde temos relações.
{
project(name: "GraphQL") {
tagline,
user {
name,
}
}
}
Com isso teremos o seguinte resultado:
{
"project": {
"tagline": "A query language for APIs",
"user": {
"name": "Mark",
}
}
}
Eu só consigo consultar?
Você pode pensar que no GraphQL você pode apenas fazer consulta já que ela é uma linguagem de consulta. Porém, é aí que você se engana no GraphQL temos uma coisa chamada mutations, elas têm a mesma sintaxe de uma query apenas iniciando com a palavra-chave mutation e com elas você consegue criar e editar dados na base.
Opinião
Ok, admito GraphQL é lindo, mas vale a pena sair usando por aí sem pensar duas vezes? Na minha humilde opinião a resposta é não. Ele fica bem em sistemas onde você tem dezenas de tabelas e as queries tem diversos joins. Caso contrario usar em sistemas menores parece querer matar barata com canhão.
Recomendo também uma leitura sobre a teoria dos grafos na qual a linguagem se baseia.
Fontes
GraphQL // Dicionário do Programador
Documentação do GraphQL
API usando GraphQL
Se chegou até aqui, me segue la nas redes vizinhas.
Top comments (0)