GraphQl - Introdução

A query language for you API

Oque é GraphQL?

GraphQL é uma linguagem de Query (bem como SQL) criada pelo Facebook em 2012 e lançada publicamente em 2015. É visto pela comunidade como uma alternativa ao padrão REST, o qual reina sobre o desenvolvimento.

É importante eliminar logo de cara a ideia de que o GraphQL vai matar o REST. Ambos os estilos de arquitetura possuem suas próprias características e cada uma se encaixa em situações diferentes.

Para que serve o GraphQL afinal?

A principal função do GraphQl é evitar o Overfetching, ou seja buscar da requisição apenas o necessário, isso em ambientes como AWS que tem a monetização pay per use (cobra pelo tráfego da informação) é uma mão na roda, ja que você não gasta dinheiro atoa com dados de uma requisição que vocẽ não precisaria.

Como faço para usá-lo?

Inicie o Package.json
npm init -y
yarn init -y
Baixe as dependências
npm install apollo-server graphql
yarn add apollo-server graphql
Coding

Starter index.js

Sem definição de tipos do GraphQl.

Observação!

No graphQl toda requisição é post, e toda Request bate no mesmo endpoint que por convenção é /graphql .

Então, como é que a requisição sabe oque ela precisa fazer ou que rumo ela precisa tomar?

R: Nós fazemos isso por meio de Query, Mutation.

Se nós quisermos listar as informações específicas de um usuário por exemplo nos usamos Query

Em paralelo com HTTP ela seria o método GET

Já Mutation ele serve pra quando queremos manipular dados

Em paralelo com HTTP (POST/PUT/PATCH/DELETE)

Scalar Types

São basicamente os tipos primitivos que temos, são eles:

  1. String
  2. Int
  3. Boolean
  4. Float
  5. ID

Beleza, então como escrevemos agora um hello world com GraphQl?

Hello World

Dentro das definições de tipos nos diremos oque o usuário poderá pesquisar, assim:

Imagem das definições de tipos

Logo em seguida, diremos oque o usuário poderá obter com os 'resolvers', ao realizar uma consulta onde tentará trazer o hello por meio de sua requisição do tipo Query.

Observação!

O GraphQl usa o mapeamento de 1-1 logo a primeira informação a ser consultada na Query, deve ser também a primeira a ser trazida no resolver de sua Query e assim sucessivamente.

Imagem da Query + Resolver

Executando o código

Primeiro inicializamos o servidor.

node src/index.js

🚀 Server Started at http://localhost:4000/

The Playground GraphQl

Aqui nesse exemplo: executaremos uma Query assim como definimos no tipo de requisição, e ele deverá trazer os dados estabelecidos pelo Resolver baseado no mapeamento de 1 por 1. Assim:

It's done!

Agora você acabou de fazer sua primeira chamada API utilizando o graphQL, simples não?

15