Saiba como o GraphQL pode mudar e melhorar os resultados da sua empresa

Publicado em 12 de julho de 2018 às 15:23

1_EOMP0V69RZ5xChG5pRoFyA

 

GraphQL, ou linguagem de consulta de grafos, foi criada em 2012 pelo time de engenheiros do Facebook, sendo uma linguagem de consulta de dados, com código aberto e fortemente tipada para APIs em tempo de execução.  Com uma estrutura robusta, o GraphQL evita surpresas. Sendo formada por um Schema, que é composto de Tipos (User, Product, Order) que é integrado por campos de tipos (id: int, name: string, email: string, orders: Order).

Diferente do que pensam, o GraphQL não é como um banco de dados, ele é uma camada de interface que está acima do dado, podendo ser aplicado em cima de qualquer fonte de dados. O GraphQL é uma especificação e possibilita que o cliente indique ao servidor como ele quer os dados. Ou seja, é possível realizar buscas específicas de informações que ele precisa da API. Então agora, ao invés de termos vários e vários endpoints, o GraphQL expõe apenas um e responde com eficiência e precisão os dados solicitados.

Sendo muito utilizado por grandes corporações como Atlassian, GitHub, Jusbrasil, Neo4j, PayPal, Sky, The New York Times, o GraphQL auxilia essas empresas no ganho de tempo, unificação dos recursos, flexibilidade do modelo de resposta e o principal: na geração de valor.

Por exemplo, imagine que você precise disponibilizar uma API para uma mesma aplicação, no entanto, em diferentes dispositivos com diferentes necessidades de dados, mas, com o mesmo valor de negócio. É aí que entra o GraphQL, com a simplicidade e flexibilidade.

Ganhos com o uso do GraphQL:

- Único endpoint: Uma única entrada, porém com saída flexível.

- APis flexíveis: O cliente decide o que quer e o servidor GraphQL se preocupa em resolver as solicitações. Portanto, é possível entregar valores diferentes para diferentes aplicações, sem se preocupar com o consumo excessivo de dados.

Por exemplo: Uma enorme massa de dados que é usada para uma App desktop, também é usada no Mobile e isso penaliza os usuários. Com o GraphQL contornamos mais fácil este problema.

Para o time de desenvolvimento a preocupação é apenas resolver as consultas feitas pelo cliente, ou seja, não importa o número de relacionamentos que uma entidade tenha, tudo é feito em uma única requisição.

- Consultas GraphQL são mais "humanas" e simples de se entender. Veja a seguir:


query {
    User(id: 428) {
        id
        name
        email
        UserAddresses {
            entities {
                addressStreet
                addressNumber
                addressZipCode
                addressCountry
                addressState
            }
        }
        UserOrders {
            entities {
                hashNum
            }
        }
    }
}

Vamos solicitar ao servidor que queremos do usuário 428 seu identificador (id), nome (name) e seu e-mail (e-mail). Agora vamos a parte boa do GraphQL, solicitaremos, também, os dados de Endereço (UserAddresses) e também os Pedidos (UserOrders).


Exemplo da mesma consulta em REST:

GET /users/428 - Retorna os dados do usuário 428

GET /users/428/addresses - Retorna os endereços do usuário 428

GET /users/428/orders - Retorna os pedidos do usuário 428

Com REST precisávamos de três requisições para trazer dados do usuário e dados relacionados ao usuário. Tornando o endpoint não flexível (tanto ao app desktop – quanto ao mobile) neste caso, teríamos o mesmo número de requisições e o mesmo tamanho de payload.

Portanto, sendo uma linguagem de consulta que facilita o trabalho na hora de fazer requisições, o intuito do GraphQL é abusarmos (literalmente!) de todos os relacionamentos possíveis. Desta forma, deixamos o cliente livre do back end para usar como quiser e o que precisar da API.

Caso você queira fazer alguns testes, acesse o GitHub GraphQL e fique atento aos próximos temas envolvendo GraphQL.