GraphQL - GraphQL

GraphQL
GraphQL Logo.svg
Vývojáři Facebook a komunita
První vydání 14. září 2015 ( 14. 9. 2015 )
Stabilní uvolnění
Června 2018 ( 2018-06 )
Úložiště github .com /graphql /graphql-spec
Napsáno Implementace v Javě , JavaScriptu , Ruby , Scala a dalších.
Operační systém Cross-platform
webová stránka graphql .org

GraphQL je open source zdrojový dotazovací a manipulační jazyk pro API a runtime pro plnění dotazů s existujícími daty. GraphQL byl vyvinut interně společností Facebook v roce 2012, než byl veřejně vydán v roce 2015. Dne 7. listopadu 2018 byl projekt GraphQL přesunut z Facebooku do nově založené nadace GraphQL Foundation, kterou pořádá nezisková nadace Linux Foundation . Od roku 2012 vzestup GraphQL sleduje časovou osu přijetí přesně podle Lee Byrona, tvůrce GraphQL. Cílem společnosti Byron je učinit GraphQL všudypřítomným napříč webovými platformami.

Poskytuje přístup k vývoji webových API a byl porovnáván a porovnáván s REST a dalšími architekturami webových služeb . Umožňuje klientům definovat požadovanou strukturu dat a ze serveru je vrácena stejná struktura dat, což brání vrácení nadměrně velkého množství dat, ale to má důsledky pro to, jak efektivní může být webová mezipaměť výsledků dotazů . Flexibilita a bohatost dotazovacího jazyka také zvyšuje složitost, která se nemusí vyplatit pro jednoduchá rozhraní API. Navzdory názvu GraphQL neposkytuje bohatost grafových operací, které lze nalézt v plnohodnotné grafové databázi, jako je Neo4j , nebo dokonce v dialektech SQL, které podporují přechodné uzavírání . Například rozhraní GraphQL, které hlásí rodiče jednotlivce, nemůže v jednom dotazu vrátit sadu všech svých předků.

GraphQL se skládá z typového systému, dotazovacího jazyka a sémantiky provádění, statické validace a introspekce typu . Podporuje čtení, zápis (mutace) a přihlášení k odběru změn dat (aktualizace v reálném čase - nejčastěji implementované pomocí Websockets ). Servery GraphQL jsou k dispozici pro více jazyků, včetně Haskell , JavaScript , Perl , Python , Ruby , Java , C ++ , C# , Scala , Go , Rust , Elixir , Erlang , PHP , R , D a Clojure .

Dne 9. února 2018 se součástí specifikace stal jazyk GraphQL Schema Definition Language (SDL).

Příklad

POST požadavek:

{
    orders {
        id
        productsList {
            product {
                name
                price
            }
            quantity
        }
        totalAmount
    }
}

Odezva:

{
    "data": {
        "orders": [
            {
                "id": 1,
                "productsList": [
                    {
                        "product": {
                            "name": "orange",
                            "price": 1.5
                        },
                        "quantity": 100
                    }
                ],
                "totalAmount": 150
            }
        ]
    }
}

Viz také

Reference

externí odkazy