GraphQL - GraphQL

GraphQL
GraphQL Logo.svg
Desenvolvedor (s) Facebook e comunidade
lançamento inicial 14 de setembro de 2015 ( 14/09/2015 )
Versão estável
Junho de 2018 ( 06 2018 )
Repositório github .com / graphql / graphql-spec
Escrito em Implementações em Java , JavaScript , Ruby , Scala , outros.
Sistema operacional Plataforma cruzada
Local na rede Internet graphql .org

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