Porque utilizar GraphQL?
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.