WykresQL - GraphQL
| Deweloper(zy) | Facebook i społeczność |
|---|---|
| Pierwsze wydanie | 14 września 2015 r. |
| Wersja stabilna | czerwiec 2018
|
| Magazyn | github |
| Napisane w | Implementacje w Java , JavaScript , Ruby , Scala , inne. |
| System operacyjny | Wieloplatformowy |
| Strona internetowa | graphql |
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