GraphQL[1] é uma linguagem de consulta criada pelo Facebook em 2012 e lançada publicamente em 2015.[2] É considerada uma alternativa para arquiteturas REST, além de oferecer um serviço runtime para rodar comandos e consumir uma API.

GraphQL
Desenvolvedor Facebook, e comunidade
Lançamento 2015 (2015)
Sistema operacional multiplataforma
Estado do desenvolvimento ativo
Página oficial graphql.org

Em 7 de novembro de 2018, o projeto GraphQL foi movido do Facebook para a recém-criada GraphQL Foundation, hospedada pela Linux Foundation, sem fins lucrativos.[3][4] Desde 2012, a ascensão do GraphQL seguiu de perto o cronograma de adoção estabelecido por Lee Byron, criador do GraphQL.[5]

O GraphQL fornece uma abordagem para o desenvolvimento de APIs da Web e foi comparado e contrastado com REST e outras arquiteturas de serviços da web. Ele permite que os clientes definam a estrutura dos dados necessários, e a mesma estrutura dos dados é retornada do servidor, evitando assim que um excesso de dados seja retornado, com implicações na eficácia do armazenamento em cache da Web dos resultados da consulta. A flexibilidade e a riqueza da linguagem de consulta também adicionam complexidade que pode não valer a pena para APIs simples.[6][7][8]


O GraphQL consiste em um sistema de tipos, linguagem de consulta e semântica de execução, validação estática e introspecção de tipos . Ele suporta leitura, gravação (mutação) e assinatura de alterações nos dados (atualizações em tempo real – mais comumente implementadas usando WebSockets ).[9] Os servidores GraphQL estão disponíveis para várias linguagens de programação, incluindo Haskell, JavaScript,[10] Perl,[11] Python,[12] Ruby, Java, C++,[13] C#, Scala, Go, Rust, Elixir,[14] Erlang, PHP, R, D[15] e Clojure. O resultado de uma única consulta é retornado no formato JSON .

Em 9 de fevereiro de 2018, o GraphQL Schema Definition Language (SDL) tornou-se parte da especificação.[16]

Exemplo editar

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
            }
        ]
    }
}

Referências

  1. «GraphQL: A query language for APIs.» (em inglês). graphql.org. Consultado em 16 de julho de 2017 
  2. Byron, Lee (14 de setembro de 2015). «GraphQL: A data query language» (em inglês). Code Facebook. Consultado em 16 de julho de 2017 
  3. «Facebook's GraphQL gets its own open-source foundation». TechCrunch (em inglês). Consultado em 7 de novembro de 2018 
  4. «The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation». The Linux Foundation (em inglês). 6 de novembro de 2018. Consultado em 7 de novembro de 2018 
  5. Anthony, Art (8 de março de 2018). «Is GraphQL Moving Toward Ubiquity?». NordicAPIs 
  6. «GraphQL vs REST: Overview». Phil Sturgeon (em inglês). Consultado em 25 de novembro de 2018 
  7. «Why use GraphQL, good and bad reasons». Honest Engineering (em inglês). 4 de agosto de 2018. Consultado em 26 de novembro de 2018 
  8. «GraphQL Fundamentals». Howto GraphQL. Consultado em 4 de julho de 2018 
  9. «GraphQL». facebook.github.io. Facebook. Consultado em 4 de julho de 2018. Arquivado do original em 18 de julho de 2018 
  10. «GraphQL js». 16 de outubro de 2021 
  11. «GraphQL - Perl implementation of GraphQL» 
  12. «Graphene». graphene-python.org. Consultado em 18 de junho de 2017 
  13. graphql/libgraphqlparser, GraphQL, 27 de maio de 2020, consultado em 30 de maio de 2020 
  14. «Absinthe: The GraphQL toolkit for Elixir». Consultado em 19 de julho de 2018 
  15. «Package graphqld on DUB» 
  16. «GraphQL SDL included in Github repository» 

Ligções externas editar

  Este artigo sobre software é um esboço. Você pode ajudar a Wikipédia expandindo-o.