Então, o que é o GraphQL?

Calleb Miquissene
GDG Maputo
Published in
4 min readApr 24, 2020
GraphQL… GraphQL.. GraphQL…

Bem-vindo a este artigo “maravilhoso” sobre GraphQL!
Se você caiu aqui, provavelmente está aprendendo sobre GraphQL ou simplesmente pesquisando sobre o assunto.
Este é o primeiro de varios artigos que publicarei aqui sobre o GraphQL.
Por esse motivo, e para lhe proporcionar uma leitura delicada, farei o possível para explicar em detalhes todos os conceitos que provavelmente causarão alguma dúvida, independentemente do seu nível de familiaridade com o tópico abordado aqui …
Para isso, usarei a metodologia de redundância que consiste em dizer a mesma coisa de maneiras diferentes e com exemplos diferentes, a fim de colocar o mesmo conteúdo em diferentes partes do seu cérebro!

Dica dada, vamos a isso!

Historia do GraphQL

Capitulo 1: Genesis

Em 2012, o Facebook decidiu reconstruir seus aplicativos móveis nativos (iOS e Android).

O desempenho dos aplicativos não era muito bom porque eles sofriam falhas constantes. Naquela época, o Facebook tinha um servidor RESTful e seus dados estavam em tabelas FQL (uma versão SQL do Facebook).
Devido ao problema com seus aplicativos nativos nas versões móveis, os engenheiros do Facebook perceberam que o problema era causado pela maneira como os aplicativos recebiam os dados.

(Certamente eles se sentaram, tomaram uma xícara de café e discutiram o problema)

Os engenheiros decidiram então melhorar a maneira como os dados eram enviados para os aplicativos.

Essa decisão resultou em uma linguagem de consulta que descreveria os recursos e requisitos dos modelos de dados para os aplicativos cliente / servidor da empresa.

Capitulo 2: A grande (ou mal entendida) batalha

Em julho de 2015, a equipe de Lee Byron, Nick Schrock e Dan Schafer, engenheiros do Facebook, lançou a primeira especificação do GraphQL e a referência de sua implementação no JavaScript, chamada graphql.js.
Em setembro de 2016, estava oficialmente pronto para uso, embora o Facebook estivesse a usar em produção há alguns anos.

Mas, por outro lado, havia o REST criado em 2000 e que vinha sendo usado por um longo tempo.

A Representational State Transfer (REST), em português Transferência de Estado Representacional, é uma abstração da arquitetura da World Wide Web, mais precisamente, é um estilo arquitetural que consiste de um conjunto coordenado de restrições arquiteturais aplicadas a componentes, conectores e elementos de dados.

Quando o GraphQL surgiu muitos programadores acreditavam que surgiu para substituir o REST.

A controvérsia foi grande e gerou debates em conferências, mas denominar o GraphQL como um assassino do REST é uma simplificação excessiva. Uma visão mais sutil é que, à medida que a Web evoluiu, o REST mostrou sinais de tensão sob certas condições. O GraphQL foi criado para aliviar essa tensão (que sera explicada em proximos capitulos).

Como o GraphQL funciona?

GraphQL é uma linguagem de consulta para a APIs, um conjunto de rotinas e padrões de programação para acesso a um aplicativo de software. É também um runtime para atender a consultas com seus dados. O serviço GraphQL é independente de transporte, mas é normalmente servido pelo HTTP.

A consulta está aninhada e, quando é executada, pode atravessar objetos relacionados. Isso nos permite fazer uma solicitação HTTP para dois tipos de dados. Não precisamos fazer várias viagens de ida e volta para detalhar vários objetos. Não recebemos dados adicionais indesejados sobre esses tipos. Com o GraphQL, nossos clientes podem obter todos os dados de que precisam em uma solicitação.

Sempre que uma consulta é executada em um servidor GraphQL, ela é validada em um sistema de tipos. Todo serviço GraphQL define tipos em um esquema GraphQL. Você pode pensar em um sistema de tipos como um blueprint para os dados da sua API, respaldado por uma lista de objetos que você define.

O GraphQL é frequentemente chamado de linguagem declarativa de busca de dados. Com isso, queremos dizer que os desenvolvedores listarão seus requisitos de dados como quais eles precisam, sem se concentrar em como os obterão. As bibliotecas de servidores GraphQL existem em uma variedade de linguagens diferentes, incluindo C #, Clojure, Elixir, Erlang, Go, Groovy, Java, JavaScript, .NET, PHP, PHP, Python, Scala e Ruby.

Se você tiver alguma dúvida ou sugestão sobre este artigo, fique à vontade para publicá-lo nos comentários!

--

--

Calleb Miquissene
GDG Maputo

Software Developer passionate about Android App Development, Data Structures & Algorithms and Computer Science