DEV Community

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

Posted on

9

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

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

AWS GenAI LIVE!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️