Graphql não é algo novo, embora mutos ainda desconheçam o que é e como ele funciona, neste artigo vou abordar alguns tópicos e conceitos e o que o diferencia do REST.
O que é Graphql?
Linguagem de consulta baseada em grafos, criada pelo Facebook em 2012
O retorno dos dados é totalmente previsível, e tornou open-source em 2015.
O que o torna diferente do REST?
Em REST, ao realizar buscas, temos vários endpoints, no GraphQl só temos um endpoint para acessar os dados do servidor
Em REST temos estrutura de dados fixa, o que faz com que sempre traga mais dados do que o necessário
No Graphql trazemos exatamente o que precisamos da nossa API através da construção de queries.
No Graphql, não precisamos ter um endpoint para identificar cada coisa da nossa requisição, passamos os argumentos em nossa Query, em REST teriamos um endpoint para /post, outro para /comments e asim por diante.
Como funciona?
Ele é uma Query language (linguagem de consulta), server-side runtime para execução dessas queries a partir da definição de schema (tipagem).
Não está vinculado a nenhum banco de dados específico ou mecanismo de armazenamento.
Um service é criado definindo types e fields e depois criando funções para cada type e cada field.
Queries?
Com o seu service em execução, podemos enviar queries para serem validadas e executadas.
Um query é recebida e verificada para que somente retorne os types e fields informados na query e depois é executada
As queries solicitam fields específicos em objetos .
As queries em Graphql permitem percorrer objetos relacionados e seus campos em uma única solicitação.
Arguments?
Além de atravessar pelos objetos e campos podemos passar argumentos na busca desses dados.
Podemos passar argumentos para campos escalares, para fazer conversões de dados no server em vez de cada client individualmente.