Ir para o conteúdo principal

O que é GraphQL? Introdução

GraphQL é uma linguagem para APIs. As APIs que fornecem uma interface GraphQL para consultar dados são chamadas de APIs GraphQL. Elas fornecem uma interface fácil de usar para consultar dados de fontes diferentes em uma única chamada de API.

A GraphQL foi desenvolvida inicialmente pelo Facebook, para superar os desafios encontrados com as APIs REST (~2012). A empresa abriu o código da linguagem de consulta em 2015 e agora é gerenciada pela GraphQL Foundation. Muitas pessoas já implementaram a especificação em diferentes linguagens de programação. A maioria das linguagens de programação comuns oferecem suporte a ela.

A GraphQL é uma tecnologia relativamente nova, significativamente promissora e com adoção crescente. É muito popular com os desenvolvedores React.

GraphQL versus REST versus SQL

As pessoas geralmente discutem se a GraphQL é a melhor metodologia de programação em comparação com a REST. Embora a GraphQL e REST sejam boas interfaces para APIs, essa não é uma comparação de maçãs com maçãs.

Há também um debate sobre GraphQL versus SQL. E novamente, ambas são opções de consulta de dados excelentes, mas servem a objetivos diferentes. A GraphQL é mais indicada para a web, devido a sua compatibilidade com JSON e sintaxe semelhante à JavaScript.

Você pode encontrar um ecossistema GraphQL completo, que inclui ferramentas, clientes e empresas, no GraphQL Landscape.

Desafios que a GraphQL aborda:

#1: Permite o uso de vários pontos de extremidade

Os clientes podem ter centenas de APIs e uma única solicitação de dados pode abranger o acesso de 10 a 20 APIs e muitas solicitações. A GraphQL fornece um único ponto de extremidade para consulta de dados em várias fontes de dados. Dessa forma, os desenvolvedores de front-end podem obter dados facilmente e criar rapidamente. 


#2: Evita a busca de dados excessiva

As APIs tradicionais retornam dados em um formato de dados específico. Por isso, você geralmente acaba obtendo campos de que não precisa. A GraphQL também permite que você pré-defina o formato JSON em que os dados devem estar. Dessa forma, serão retornados apenas os dados que você solicitou.

Com isso, a execução de seus aplicativos é mais rápida. Esse é um fator importante para dispositivos de internet mais lentos, como smartphones.


#3: Controle de versões

As APIs tradicionais enfrentam desafios com o controle de versões e a compatibilidade com versões anteriores. Isso ocorre porque as versões precisam passar no próprio ponto de extremidade (como "/v1/") ou cabeçalhos. A GraphQL retorna somente os dados que foram solicitados explicitamente, por isso, novos recursos podem ser adicionados facilmente.


#4: Acesso fácil (relational) aos dados

A forma tradicional de obter dados relacionais de uma fonte de dados envolve escrever consultas SQL e depois juntar tais dados em tabelas diferentes. Isso torna-se difícil quando se trata de dados aninhados com relações pai-filho. A GraphQL simplifica a consulta a dados usando padrões da web. Dessa forma, você não precisa ser um especialista em SQL para acessar dados. 


#5: Integração

A GraphQL fornece uma interface fácil de usar para consultar dados de fontes diferentes em uma única chamada de API. No entanto, o acesso aos dados de diferentes fontes exige conectividade robusta e desempenho em escala. O MuleSoft pode servir como uma camada de integração entre seus sistemas e a API GraphQL que você expõe.

Outra solução é criar um gráfico de dados sobre sua application network e expô-lo como um ponto de extremidade GraphQL. Para criar esse ponto de extremidade único, usa-se um criador gráfico por meio do qual as APIs podem ser vinculadas em um gráfico de dados baseado no relacionamento que houver entre elas. Os consumidores podem consultar esse ponto de extremidade único utilizando um criador de consulta visual em que podem selecionar os campos necessários ao projeto. 

A federação de APIs permite que as organizações definam relacionamentos de dados entre as APIs na application network e gerem automaticamente um ponto de extremidade GraphQL para acessar dados. Dessa forma, os desenvolvedores podem rapidamente obter uma forma alternativa de acessar dados a partir da application network.