WykresQL - GraphQL

WykresQL
Logo GraphQL.svg
Deweloper(zy) Facebook i społeczność
Pierwsze wydanie 14 września 2015 r. ( 14.09.2015 )
Wersja stabilna
czerwiec 2018 ( 2018-06 )
Magazyn github .com /graphql /graphql-spec
Napisane w Implementacje w Java , JavaScript , Ruby , Scala , inne.
System operacyjny Wieloplatformowy
Strona internetowa graphql .org

GraphQL to język zapytań i manipulacji danymi typu open source dla interfejsów API oraz środowisko wykonawcze do wykonywania zapytań przy użyciu istniejących danych. GraphQL został opracowany wewnętrznie przez Facebooka w 2012 roku, zanim został opublikowany w 2015 roku. 7 listopada 2018 roku projekt GraphQL został przeniesiony z Facebooka do nowo utworzonej GraphQL Foundation, której gospodarzem jest non-profit Linux Foundation . Od 2012 roku rozwój GraphQL przebiega zgodnie z harmonogramem przyjętym przez Lee Byrona, twórcę GraphQL, z dokładnością. Celem Byrona jest uczynienie GraphQL wszechobecnym na platformach internetowych.

Zapewnia podejście do tworzenia internetowych interfejsów API i zostało porównane z REST i innymi architekturami usług internetowych . Pozwala klientom zdefiniować strukturę wymaganych danych, a ta sama struktura danych jest zwracana z serwera, zapobiegając w ten sposób zwracaniu zbyt dużych ilości danych, ale ma to wpływ na skuteczność buforowania w sieci WWW wyników zapytań . Elastyczność i bogactwo języka zapytań zwiększa również złożoność, która może nie być opłacalna w przypadku prostych interfejsów API. Pomimo nazwy GraphQL nie zapewnia bogactwa operacji na grafach , które można znaleźć w pełnoprawnej bazie danych grafów, takiej jak Neo4j , ani nawet w dialektach SQL obsługujących zamykanie przechodnie . Na przykład interfejs GraphQL, który zgłasza rodziców danej osoby, nie może zwrócić w pojedynczym zapytaniu zestawu wszystkich ich przodków.

GraphQL składa się z systemu typów, języka zapytań i semantyki wykonania, statycznej walidacji i introspekcji typów . Obsługuje odczytywanie, zapisywanie (mutowanie) i subskrypcję zmian danych (aktualizacje w czasie rzeczywistym – najczęściej implementowane za pomocą Websockets ). Serwery GraphQL są dostępne dla wielu języków, w tym Haskell , JavaScript , Perl , Python , Ruby , Java , C++ , C# , Scala , Go , Rust , Elixir , Erlang , PHP , R , D i Clojure .

9 lutego 2018 r. częścią specyfikacji stał się język GraphQL Schema Definition Language (SDL).

Przykład

Żądanie POST :

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

Odpowiedź:

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

Zobacz też

Bibliografia

Zewnętrzne linki