GraphQL - GraphQL
| Desenvolvedor (s) | Facebook e comunidade |
|---|---|
| lançamento inicial | 14 de setembro de 2015 |
| Versão estável | Junho de 2018
|
| Repositório | github |
| Escrito em | Implementações em Java , JavaScript , Ruby , Scala , outros. |
| Sistema operacional | Plataforma cruzada |
| Local na rede Internet | graphql |
GraphQL é uma consulta de dados de código aberto e linguagem de manipulação para APIs e um tempo de execução para atender consultas com dados existentes. GraphQL foi desenvolvido internamente pelo Facebook em 2012 antes de ser lançado publicamente em 2015. Em 7 de novembro de 2018, o projeto GraphQL foi movido do Facebook para a Fundação GraphQL recém-criada, hospedada pela Linux Foundation sem fins lucrativos . Desde 2012, a ascensão do GraphQL tem seguido o cronograma de adoção estabelecido por Lee Byron, o criador do GraphQL, com precisão. O objetivo de Byron é tornar o GraphQL onipresente em todas as plataformas da web.
Ele fornece uma abordagem para desenvolver APIs da web e foi comparado e contrastado com REST e outras arquiteturas de serviço da web . Ele permite que os clientes definam a estrutura dos dados necessários e a mesma estrutura dos dados é retornada do servidor, evitando, portanto, o retorno de quantidades excessivamente grandes de dados, mas isso tem implicações na eficácia do armazenamento em cache da web dos resultados da consulta . A flexibilidade e riqueza da linguagem de consulta também adiciona complexidade que pode não valer a pena para APIs simples. Apesar do nome, GraphQL não fornece a riqueza de operações de gráfico que se pode encontrar em um banco de dados de gráficos completo , como Neo4j , ou mesmo em dialetos de SQL que suportam fechamento transitivo . Por exemplo, uma interface GraphQL que relata os pais de um indivíduo não pode retornar, em uma única consulta, o conjunto de todos os seus ancestrais.
GraphQL consiste em um sistema de tipo, linguagem de consulta e semântica de execução, validação estática e introspecção de tipo . Ele suporta leitura, gravação (mutação) e assinatura de alterações nos dados (atualizações em tempo real - mais comumente implementadas usando Websockets ). Os servidores GraphQL estão disponíveis para várias linguagens, incluindo Haskell , JavaScript , Perl , Python , Ruby , Java , C ++ , C # , Scala , Go , Rust , Elixir , Erlang , PHP , R , D e Clojure .
Em 9 de fevereiro de 2018, o GraphQL Schema Definition Language (SDL) tornou-se parte da especificação.
Exemplo
Solicitação POST :
{
orders {
id
productsList {
product {
name
price
}
quantity
}
totalAmount
}
}
Resposta:
{
"data": {
"orders": [
{
"id": 1,
"productsList": [
{
"product": {
"name": "orange",
"price": 1.5
},
"quantity": 100
}
],
"totalAmount": 150
}
]
}
}
Veja também
Referências
links externos