Porque utilizar GraphQL?

Allan Barbosa
allbarbos
Published in
2 min readJan 4, 2019

GraphQL é uma linguagem de consulta a dados para API’s desenvolvida pelo Facebook que nos dá alguns poderes e benefícios citados abaixo.

Evolução das APIs

O fato não ter uma interface padrão definida facilita a evolução, pois não haveria breaking changes caso necessite agregar mais informações em determinado recurso, pois quem controla o que quer receber é o cliente e não mais o servidor conforme estamos acostumado com o REST.

Supondo que necessitamos buscar em uma API REST apenas os campos Nome, Sobrenome e Idade do recurso Usuários, o servidor nos retornaria o resultado abaixo - afinal existe um contrato definido para esse retorno.

api/v1/usuarios/02723022285{
"nome": "Erick",
"sobrenome": "Enrico Souza",
"idade": 27,
"sexo": "Masculino",
"rg": "40.659.657-8",
"cpf": "027.230.222-85",
"nascimento": "26/11/1991"
}

Se amanhã houver a necessidade de remover/adicionar um campo precisaríamos criar um novo contrato com o cliente para que ele não seja pego de surpresa, pois quem controla os dados que serão fornecidos é a API.

Já no cenário do GraphQL esse problema de contrato seria invisível, pois se o cliente deseja consumir apenas os dados Nome, Sobrenome e RG o retorno seria:

{
"nome": "Erick",
"sobrenome": "Enrico Souza",
"rg": "40.659.657-8"
}

Ou seja, o fato do cliente controlar os dados que deseja receber acaba se tornando-se mais escalável.

Performance

Conforme mostrado acima, ao utilizar o GraphQL as requisições se tornam mais rápidas pois o payload trafegado na rede é bem reduzido, afinal será enviado apenas as informações necessárias para a consulta em questão.

Vários recursos em request único

As consultas acessam as propriedades de um recurso e também seguem suas referências, ou seja, é possível obter todos os dados em um único request e isso traz um enorme ganho de performance, pois se fosse em um cenário REST seria exigido o carregamento de várias URLs para obter outros recursos, sendo assim o GraphQL traz um significativo ganho as aplicações e ainda maior para aquelas que utilizam redes móveis lentas.

E para finalizar é importante frisar que o GraphQL não tem nenhuma relação com banco de dados ou sistemas de armazenamentos, ele é apenas um ponto de entrada da nossa aplicação que irá nos auxiliar em realizar consultas de dados performáticas.

--

--