Apresentando o GraphQL em uma festa

GraphQL e REST são dois paradigmas usados ​​para criar APIs para aplicativos da web.

REST é um conjunto de identificadores exclusivos (URLs) que os aplicativos usam para solicitar e enviar dados.

O GraphQL é uma linguagem de consulta que permite aos aplicativos clientes especificar com precisão os dados necessários a partir de um único terminal.

Essas são tecnologias relacionadas, usadas principalmente para as mesmas coisas (ou podem coexistir), mas são muito diferentes.

Soa um pouco fresco, certo? Vamos explicar as diferenças de uma maneira mais interessante, o que pode ajudá-lo a entender melhor o GraphQL, e talvez apenas diverti-lo.

Você está em uma festa


imagem

Você veio à festa para fazer networking, então precisa de informações sobre as pessoas ao seu redor. Nas proximidades, há mais cinco convidados.

Seus crachás são os seguintes:

Richy REST
Amigo de Richy REST
Empregador de Richy REST
Georgia GraphQL

Sendo um festeiro ativo e sociável, você vai direto para Richie Rest e diz: "Olá, sou Adam Epilation, e quem é você?" A resposta de Richie Resta é:

{ name: "Richy REST", age: 33, married: false, hometown: "Circuits-ville", employed: true // ... 20 other things about Richy REST } 

Você pensou: "Uau, muita informação imediatamente". Tentando evitar um silêncio constrangedor, você lembra que Richie Rest mencionou que ele trabalha e pergunta: "Onde você trabalha?"

Surpreendentemente, Richie Rest não tem idéia de onde ele trabalha. Talvez o empregador Richie Resta saiba?

Você faz a mesma pergunta ao empregador Ritchie Resta, que fica feliz em responder sua pergunta:

 { company: "Mega Corp", employee_count: 11230, head_quarters: "1 Main Avenue, Big City, 10001, PL" year_founded: 2005, revenue: 100000000, // ... 20 other things about Richy REST Employer } 

Neste ponto você já está exausto. Você nem quer conhecer um amigo de Richie Resta! Pode levar uma eternidade, desperdiçar toda a sua energia e, além disso, você não tem mais tempo.

No entanto, Georgia GrafKewel fica muito perto e você decide conversar com ela.

"Oi, qual é o seu nome?"

 { name: "Georgia GraphQL" } 

"De onde você é e quantos anos você tem?"

 { hometown: "Pleasant-Ville", age: 28 } 

"Quantos hobbies e amigos você tem e qual é o nome de seus amigos?"

 { hobbies_count: 12, friends_count: 50, friends: [ { name: "Steve" }, { name: "Anjalla" }, // ...etc ] } 

Georgia GrafKewEl é incrível, articula claramente pensamentos, conciso e preciso. Você definitivamente deseja trocar cartões de visita com ela e trabalhar juntos em projetos futuros.

Esta história inclui a experiência de desenvolvedores que trabalham com GraphQL e REST. O GraphQL permite que os desenvolvedores formulem o que desejam com uma consulta simples e obtenham apenas o que especificam em resposta. Essas consultas são dinâmicas, portanto, apenas um ponto final é necessário. O REST, pelo contrário, possui respostas predefinidas e requer que os aplicativos usem vários pontos de extremidade para consultar completamente os dados.

Termine com as metáforas. Vamos ao que interessa


Para uma divulgação mais aprofundada dos conceitos apresentados na metáfora da parte, passamos especificamente a duas limitações que frequentemente surgem ao usar o REST.

1. Várias ocorrências na obtenção de recursos relacionados

O gerenciamento de dados para aplicativos móveis e da Web geralmente requer recursos e conjuntos de dados relacionados. Portanto, a obtenção de dados usando a API REST pode acarretar inúmeras solicitações para vários pontos de extremidade. Por exemplo, uma solicitação de postagem e seu autor associado podem ser feitos por duas solicitações para terminais diferentes:

 someServer.com/authors/:id someServer.com/posts/:id 

Chamadas repetidas para a API afetam o desempenho do aplicativo. Isso é ainda mais importante para dispositivos com baixa largura de banda (por exemplo, relógios inteligentes, IoT, dispositivos móveis antigos etc.).

2. Busca excessiva e busca insuficiente

A busca excessiva / insuficiente é inevitável ao usar a API RESTful. Usando o exemplo acima, o nó de extremidade domainName.com/posts/:id recupera dados para um registro específico. Cada entrada consiste em atributos como ID, corpo, título, data da publicação, authorId e outros. No REST, uma resposta é predefinida e o mesmo objeto de dados é sempre retornado.

Nas situações em que apenas o título e o texto da gravação são necessários, a busca em excesso ocorre porque mais dados são enviados pela rede do que realmente são usados.

Quando toda a publicação é necessária, juntamente com os dados relacionados sobre o autor, a busca é insuficiente - porque menos dados são enviados pela rede do que realmente são usados. A busca insuficiente de dados leva a um aumento no número de solicitações de API e, como resultado, no uso excessivo de recursos da Internet.

Consultas de clientes com GraphQL


O GraphQL representa uma abordagem única que oferece enorme flexibilidade aos aplicativos clientes. Com o GraphQL, a consulta é enviada para sua API e exatamente o que você precisa é retornado - nem mais nem menos - em uma consulta. Os resultados da consulta são retornados da mesma forma que a própria consulta, garantindo que a estrutura de resposta seja sempre previsível. Esses fatores permitem que os aplicativos executem mais rapidamente e sejam mais estáveis, pois controlam os dados que recebem, não o servidor.

"Os resultados são retornados da mesma forma que as consultas"


 /* Query */ { myFriends(first: 2) { items { name age } } } 

 /* Response */ { "data": { "items": [ { "name": "Steve", "age": 27 }, { "name": "Kelly", "age": 31 } ] } } 

Verificação da realidade


Agora você provavelmente acha que trabalhar com o GraphQL é tão fácil quanto cortar manteiga quente com uma espada de samurai. Isso pode ser verdade para desenvolvedores front-end. No entanto, quando se trata de configurar o lado do servidor, alguém precisa fazer o trabalho mais difícil. A nossa amiga Georgia GrafKewEl fez um grande esforço para se tornar um profissional de classe.

Criar a API GraphQL do lado do servidor leva tempo, esforço e experiência. No entanto, aqueles que estão prontos para o teste são capazes de lidar com isso. Existem muitas maneiras diferentes de fazer isso, por exemplo:

Por conta própria : se você realmente quiser fazer tudo sozinho, tente criar a API do GraphQL com pacotes. Usando Rails? Tente graphql-ruby. Adora o Node.js? Tente express-graphql.

Com a ajuda : se a configuração flexível de hospedagem é uma prioridade para você, algo como Graph.cool pode ajudá-lo a iniciar o projeto GraphQL.

Instantâneo : Cansado de escrever um modelo CRUD e deseja começar rapidamente? O 8base fornece uma API GraphQL instantânea e um servidor que pode ser estendido.

Em conclusão


Para serviços da Web, o REST foi um avanço significativo, facilitando a criação de APIs para acessar os recursos necessários. No entanto, seu design não levou em consideração a proliferação atual de dispositivos móveis, com várias restrições no volume e nos requisitos de download de dados. Essa omissão levou à crescente popularidade do GraphQL, que o Facebook tornou open source em 2015, principalmente devido à flexibilidade que oferece aos desenvolvedores front-end. Trabalhar com o GraphQL é uma experiência fantástica para desenvolvedores e equipes individuais.

Source: https://habr.com/ru/post/pt470097/


All Articles