DEV Community

Cover image for Como e por que usar GraphQL?
Cristian Magalhães
Cristian Magalhães

Posted on

Como e por que usar GraphQL?

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 Projectcom as propriedades name, taglinee contributorsque tem vários Users.

type Project {
  name: String
  tagline: String
  contributors: [User]
}
Enter fullscreen mode Exit fullscreen mode

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
  }
}
Enter fullscreen mode Exit fullscreen mode

E como mágica temos o resultado abaixo:

{
  "project": {
    "tagline": "A query language for APIs"
  }
}
Enter fullscreen mode Exit fullscreen mode

Fácil né? Agora vou te mostrar um exemplo de uma query onde temos relações.

{
  project(name: "GraphQL") {
    tagline,
    user {
      name,
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Com isso teremos o seguinte resultado:

{
  "project": {
    "tagline": "A query language for APIs",
    "user": {
      "name": "Mark",
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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.

thank you dog

Top comments (0)