“Meu Deus outra pessoa falando de GraphQL”
Tags: python, graphql, tutorial, api
Published: 2020-04-12 15:26:47

Bom dia meu caro e minha cara padawan espero que a força dentro de você esteja em equilíbrio (e que também não saia correndo) 😁

Imagine que você inventou uma nova coisa onde você pode pressionar exatamente os botões que você quer e então você pega tudo que você quer e em combinação com isso, é muito mais divertido - Nick Schrock
Essa citação acima é do criador do GraphQL uma ferramenta que talvez você já esteja cansado de ouvir falar, mas que ainda tem dúvidas sobre o que levou companias como Airbnb, Twitter e até Github a adotar, e é sobre isso que vamos conversar hoje.

## Veio para resolver o que? 🤔

Esta ferramenta foi criada pela equipe do Facebook durante o desenvolvimento do app iOS do Facebook e um dos desafios que eles tiveram foi como consumir os dados de uma maneira eficiente e rápida, se você abrir seu perfil agora vão pipocar várias informações de seus amigos desde o que estão falando, fotos que postaram e até se estão com fome.

Tradicionalmente o que seria feito é fazer várias requisições de cada parte do sistema, para aos poucos ir montando as informações em sua tela, por exemplo, em um post com foto poderia ser feito uma requisição para pegar os comentários, o texto do post, a foto e quem comentou, daria um trabalhinho não? 😅. 

É isso que eles resolveram com o GraphQL que usa uma linguagem de consulta que possibilita que  você peça somente o que quiser do servidor e de uma vez, em um post como esse há muitas informações aninhadas e que puxam umas às outras, por exemplo um comentário precisa de um usuário e o post da foto desta forma se evita que você pegue informações desnecessárias e como falado acima tudo que precisa de uma vez diminuindo a latência. 

Com isso vem algumas vantagens como o aplicativo fica mais rápido porque ele não precisa tratar cada requisição separadamente, traz uma flexibilidade e facilidade na hora de tratar os dados que deixa o desenvolvimento muito mais produtivo, principalmente no frontend já que os dados já estão à disposição é só consultar. 🤯

## Beleza, mas como funciona essas consultas? 😏

Vou usar como exemplo um app que fiz e que inclusive está aberto para quem quiser fazer consultas segue link "periodic-table".  E vou deixar um passo a passo de como fazer uma consulta para quem está mais interessado:  

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/288ze3onlzhumnin5ieo.jpg)

_1._ Envolva sua query em chaves  - {

_2._ No meu caso como vou fazer mais de uma query eu preciso colocar um nome para cada uma, que foi "item1", "item2", "item3".

_3._ Depois coloco o nome do meu resolver que é a função que irá fazer a minha query no meu banco de dados, a função "elemento" por exemplo faz uma query usando o nome do elemento químico.

_4._ "name" no caso é só a variável  que irei mandar para o sistema à qual estou colocando o nome do que quero pesquisar.

_5._ Aqui já temos uma querie, depois só colocamos que dados queremos e pronto, só fechar as chaves - }

## E teremos esse resultado:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/uigkze286h94t05ec5nd.jpg)

Viu só em 3 queries eu consegui todos os dados do elemento hidrogênio, o nome e a família do elemento Cobre e todos os nomes e siglas dos elementos que são da família dos Metais de Transição.
Caso queira ver um projeto usando essa api, pode dar uma olhada em uma brincadeirinha que fiz aqui Tabela-Periódica.

## Encerrando 

Espero que tenha falado alguma coisa diferente do que costumam falar, ela não é uma bala de prata como tantos falam, mas ainda assim é uma ferramenta incrível que não pude deixar de falar aqui no meu cantinho da interwebs. E bem muito obrigado pela leitura e até mais!!! 👏