Sobre o GraphQL

O GraphQL é uma linguagem de consulta para APIs e uma runtime para atender essas consultas com os dados existentes. Ao contrário do REST, nele você pode compor a sua requisição como achar melhor.

O que é GraphQL?

Quando você pensa em Facebook, provavelmente a primeira coisa que vem à cabeça são fotos de gatinhos e parentes distantes, mas eles também criam tecnologias interessantes, como o GraphQL.

Nas própria palavras do site oficial do GraphQL:

O GraphQL é uma linguagem de consulta para APIs e uma runtime para atender essas consultas com os dados existentes. O GraphQL fornece uma descrição completa e compreensível dos dados em sua API, oferece aos clientes o poder de solicitar exatamente o que eles precisam e nada mais, facilita a evolução das APIs ao longo do tempo e permite ferramentas poderosas para o desenvolvedor.

Ou seja, é uma forma alheia ao REST de executar requisições para APIs, onde você pode escolher quais informações retornar, executar múltiplas queries não co-dependentes em uma mesma requisição. Além de ser muito conveniente para nós, do lado da API, não precisar ficar alterando os endpoints para atender novas funcionalidades.

Por quê estamos usando GraphQL?

O GraphQL nos permite construir uma aplicação mais dinâmica e atender melhor às necessidades específicas dos clientes que utilizam a API sem precisar fazer modificações que afetem todos os usuários.

Você sabe aquele momento que percebe que o seu backend está tão cheio de gambiarras funcionalidades novas que começa a se tornar um emaranhado de código que ninguém mais entende completamente. Como aquelas empresas com aplicações em COBOL e que cobram absurdamente caro para implementarem melhorias, já que os programadores não sabem o quê vai quebrar até mesmo pra tirar um comentário? Pois é... motivo número 1. (Isso justifica não apenas o GraphQL, mas o porque é bom refazer as coisas de tempos em tempos).

GraphQL facilita muito a nossa vida ao reduzir os controllers do modelo MVC. Além de outras vantagens para nós e para você integrar com a API. Dentre elas:

  • Volume menor de requisições para a API, encadeando várias queries que não dependem umas das outras, em uma mesma requisição;

  • É fortemente tipado, evitando possíveis bugs ao receber dados em um formato inesperado;

  • O corpo e tempo de resposta das requisições é menor, uma vez que é possível escolher somente as informações necessárias.

Nós estamos gostando do GraphQL e esperamos que você também consiga se divertir fazendo as queries e usando os geradores de código que vem no pacotão de algo que disponibiliza um schema que contém tudo o que pode ser feito com a API.

Você pode entender melhor tudo que você pode fazer com o GraphQL em https://graphql.org

Para mais materiais e outras utilidades, consulte essa lista de coisas legais para GraphQL: https://github.com/chentsulin/awesome-graphql