GraphQL: uma alternativa ao REST em HTTP

GraphQL: uma alternativa ao REST em HTTP

Existem muitos padrões de arquitetura de código aberto para construir e distribuir aplicativos. As APIs REST (Representational State Transfer), SOAP (Simple Object Access Protocol), RPC (Remote Procedural Call) e GraphQL são as mais populares.





APIs RESTful são o padrão de arquitetura de API mais usado. Se você escreveu APIs RESTful complexas com muitos endpoints, provavelmente percebeu como elas podem ser complicadas. Isso é especialmente verdadeiro se houver apenas pequenas diferenças entre os pontos de extremidade.





MAKEUSEO VÍDEO DO DIA

Você também pode encontrar problemas com a busca de dados, pois as APIs RESTful não são flexíveis o suficiente para selecionar dados específicos. O GraphQL resolve esses problemas de APIs RESTful.





O que é GraphQL?

GraphQL (Graph Query Language) é uma linguagem de consulta e tempo de execução para construção de APIs. Ao contrário das APIs REST com muitos endpoints para consumir dados, as APIs do GraphQL têm um ponto de entrada. Você pode buscar dados específicos descrevendo-os em consultas.

como aumentar a vida da bateria de telefones Android

o Especificação do GraphQL define a linguagem de consulta e como os servidores GraphQL operam. Você pode criar e consumir APIs GraphQL em linguagens do lado do servidor, de Python a Javascript , e qualquer idioma que suporte HTTP.



Meta construiu o GraphQL em 2012 como uma alternativa ao REST para construir em HTTP. Eles lançaram o GraphQL como um padrão de código aberto em 2015. Hoje, a fundação GraphQL supervisiona o desenvolvimento da especificação GraphQL.

O GraphQL é relativamente novo, com baixa adoção e há custos ocultos para usá-lo. A criação de APIs GraphQL pode ser desnecessariamente complexa, especialmente para projetos pequenos com alguns endpoints.





Além disso, todas as solicitações do GraphQL eventualmente retornam um código de status de 200, independentemente do estado da solicitação.

Como o GraphQL funciona?

  GraphQL's functions and syntax

Diferente REST, que é orientado a recursos , o GraphQL exige que você pense nos dados como um gráfico para interagir com os dados. Você pode especificar a estrutura dos dados e a especificação fornece uma interface de consulta robusta para interagir com a API por HTTP. Você poderá usar vários recursos, dependendo do Pacote ou biblioteca GraphQL você escolhe usar.





Os esquemas do GraphQL incluem tipos de objetos que definem o objeto solicitável e seus campos disponíveis. Em consultas e mutações de API, o pacote GraphQL valida as consultas e executa as consultas com base nas funções de manipulador especificadas (resolvedores).

Por que você deve usar o GraphQL?

REST é um padrão fácil de usar, e a maioria das linguagens de programação possui ferramentas para construir APIs RESTful rapidamente. No entanto, há muitos problemas com a construção e consumo de APIs RESTful.

Aqui estão alguns dos problemas com REST que fazem com que os desenvolvedores prefiram o GraphQL para alguns casos de uso.

Busca de dados ineficiente

As APIs RESTful retransmitem dados com base na especificação do endpoint. Eles não são flexíveis o suficiente para recuperar dados além do que está codificado na função de manipulador do endpoint.

Suponha que um endpoint retorne uma lista de dados em chamada e você precise especificar valores ou critérios para campos. Nesse caso, o desenvolvedor precisa criar um endpoint e definir a lógica de negócios para retornar os dados. Você pode analisar o valioso recurso manualmente, o que eventualmente leva mais tempo.

O GraphQL resolve o problema de busca de dados ineficiente, pois você pode consultar APIs para retornar dados com base em critérios e especificações de forma flexível.

As APIs do GraphQL são interativas; você pode especificar os dados que precisa recuperar em uma sintaxe fácil e legível.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

A consulta GraphQL acima consulta um do utilizador esquema para entradas onde o era campo é 89. A consulta tem uma consulta incorporada para entradas onde o vivo campo avalia verdadeiro . Ele retorna os campos de nome, biografia e nacionalidade do esquema.

Desenvolvimento rápido

Construir e consumir APIs GraphQL é mais fácil do que usar REST, especialmente à medida que o tamanho do projeto aumenta. Durante a fase de desenvolvimento, você não precisa desenvolver tantas rotas e funções de manipulador quanto ao desenvolver APIs RESTful. Consumir APIs GraphQL não é tão tedioso quanto APIs RESTful.

No REST, diferentes endpoints dão acesso a diferentes recursos, diferentemente do GraphQL, onde há um único endpoint. Isso gera flexibilidade e desempenho, e as consultas podem chamar diferentes funções de resolução.

A linguagem de definição de esquema GraphQL

O GraphQL Schema Definition Language (SDL) especifica os esquemas para serviços GraphQL.

A sintaxe GraphQL SDL é fácil de ler e entender. Você especificará a estrutura do seu esquema em um arquivo com o .graphql ou .graphqls extensão.

por que meus dados móveis são tão lentos
type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

O código GraphQL acima é o esquema para uma API GraphQL que define a estrutura da API para solicitações. O esquema define a funcionalidade CRUD para a API.

No lado do cliente, com base na estrutura do esquema e nos dados ou operação do cliente, o cliente pode executar um consulta (GET ou DELETE em REST) ​​ou um mutação (PUT ou POST).

Aqui está um exemplo de consulta de Humano esquema.

query Human { 
name
age
}

A consulta acima retornaria o esquema humano nome e era dados de campo.

As mutações do GraphQL têm uma sintaxe bastante diferente em comparação com as consultas. Aqui está um exemplo de operação de mutação no Humano esquema.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

As entradas do código de mutação nome e era campos para o cliente e retorna os dados dos campos.

Você precisará de um armazenamento de dados para persistência ao criar sua API GraphQL. Assim como o REST e a maioria das arquiteturas da Web baseadas em HTTP, o GraphQL não possui estado e você pode usar qualquer armazenamento de dados ou banco de dados para seu aplicativo.

Construindo uma API GraphQL

  Idiomas compatíveis com GraphQL

GraphQL é uma especificação, e você pode construir GraphQL nas linguagens de servidor mais populares. Você terá que encontrar uma biblioteca com os recursos necessários para o seu projeto.

Ao escolher uma biblioteca GraphQL, você deseja usar uma biblioteca rica em recursos que ofereça suporte a todos os tipos e operações do GraphQL. A maioria das bibliotecas adota uma abordagem que prioriza o esquema ou o código. No primeiro, você define um esquema GraphQL e a biblioteca gera resolvedores e código clichê. Para o último, você codifica os resolvedores sem definir um esquema.

GraphQL está ganhando adoção

Desde o início do GraphQL, desenvolvedores e empresas lançaram ferramentas para simplificar seu uso. Isso pode reduzir o tempo de desenvolvimento para projetos menores e médios.

Você pode conferir os clientes GraphQL de código aberto, a documentação do GraphQL e sua especificação para saber mais.