Wprowadzenie do GraphQL i Gato GraphQL
Witaj w przewodnikach Gato GraphQL. Tutaj znajdziesz wiele informacji na temat instalowania, konfigurowania i używania wtyczki Gato GraphQL na swoim serwisie WordPress.
Czym jest GraphQL
GraphQL to specyfikacja API, która umożliwia klientom (takim jak strona internetowa w przeglądarce lub aplikacja mobilna) określenie dokładnie, jakich danych potrzebują, a serwer implementujący API pobierze dokładnie te dane.
Query GraphQL wygląda tak:
query {
posts {
id
title
content
author {
id
name
}
}
}Odpowiedź serwera jest w formacie JSON i zawiera dane w tej samej strukturze co query. Wygląda to tak:
{
"data": {
"posts": [
{
"id": 1,
"title": "Hello world",
"content": "<p>How are you doing?</p>",
"author": {
"id": 1,
"name": "Leo"
}
},
{
"id": 2,
"title": "Scheduled post",
"content": "<p>This post is scheduled to be published in the future.</p>",
"author": {
"id": 2,
"name": "Markus"
}
},
{
"id": 3,
"title": "Lorem ipsum",
"content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
"author": {
"id": 3,
"name": "Socrates"
}
}
]
}
}Serwery GraphQL mogą również „mutować" (czyli tworzyć i aktualizować) dane. W takim przypadku słowo kluczowe operacji query należy zastąpić słowem mutation:
mutation {
createPost(input: {
title: "New post",
contentAs: { html: "Lorem ipsum dolor sit amet" }
}) {
id
status
}
}Sprawdź oficjalną stronę GraphQL pod adresem graphql.org.
Czym jest Gato GraphQL
Gato GraphQL to wtyczka dla WordPress, która przekształca serwis w serwer GraphQL, umożliwiając pobieranie i modyfikowanie danych z serwisu WordPress przy użyciu języka GraphQL.
Gato GraphQL dąży do tego, by być:
Łatwy w użyciu
Filozofia WordPress głosi, że każda osoba, niezależnie od tego, czy posiada umiejętności techniczne, musi być w stanie korzystać z oprogramowania. Wtyczka stara się spełniać tę filozofię, czyniąc tworzenie API i interakcję z nim jak najprostszą.
Przykładowo, Gato GraphQL umożliwia publikowanie utrwalonych queries (które są endpointami udostępniającymi predefiniowane dane, podobnymi do endpointów REST) przy użyciu interfejsu dostarczonego przez edytor WordPress; podobnie jak pisanie wpisu, jest to dostępne dla każdego.
Szybki
Rozwiązanie query GraphQL zwykle wymaga iteracji grafu zawierającego dane wszystkich zapytanych encji. Im więcej węzłów w grafie i im większa jego głębokość, tym wolniejszy będzie ten proces (nawet wykładniczo wolniejszy).
Gato GraphQL stosuje inne podejście: używa struktury modelu komponentowego do rozwiązywania query GraphQL (zamiast grafu), co oznacza proces rosnący liniowo wraz z głębokością query (nie wykładniczo).
Ponadto kompilowane, walidowane i wykonywane są tylko te elementy schematu, które są wymagane przez query GraphQL, a nie cały schemat GraphQL. W rezultacie, niezależnie od tego, czy Twój serwis WordPress ma zainstalowane 3 czy 30 Custom Post Types, czas rozwiązania query pozostanie taki sam.
Potężny
API pełnią rolę głównej bramy umożliwiającej klientowi interakcję z serwerem; ważne jest, aby API nie było w żaden sposób ograniczone, tak aby mogło spełniać dowolne wymagania.
Ta wtyczka umożliwia modyfikowanie wyników wykonania query za pomocą niestandardowych funkcji, zewnętrznych API i usług opartych na chmurze. Pobrane dane mogą być iterowane i manipulowane według potrzeb, a wynik query może być odpowiednio zmieniany w dowolny pożądany sposób, więc praktycznie nic nie jest niemożliwe do zrealizowania.
Bezpieczny
API GraphQL może być łatwo źle zarządzane, ujawniając dostęp do wszystkich danych w serwisie WordPress każdemu, w tym złośliwym podmiotom; serwer GraphQL musi zapewniać odpowiednie środki bezpieczeństwa, aby zagwarantować, że tylko uprawnieni użytkownicy mają dostęp do danych.
Ta wtyczka bardzo poważnie traktuje bezpieczeństwo i natywnie wdrożyła kilka środków bezpieczeństwa. Pojedynczy endpoint może być wyłączony; dane mogą być udostępniane za pośrednictwem utrwalonych queries; przyznawanie dostępu do danych odbywa się za pomocą konfigurowalnych list kontroli dostępu (opartych na tym, czy użytkownik jest zalogowany, czy nie, posiada określoną rolę lub uprawnienie, lub niestandardową regułę); a API może być zdefiniowane jako publiczne lub prywatne.
Wybiegający w przyszłość
GraphQL to standard, który nieustannie ewoluuje, a społeczność stale sugeruje pomysły na nowe funkcjonalności, które mają zostać dodane do specyfikacji w przyszłości.
Ta wtyczka nie lubi czekać; już teraz zawiera wiele nowych funkcjonalności, które zostały zaproponowane (takich jak przestrzenie nazw schematu, wykonywanie wielu queries i inne) jako funkcje opt-in, które muszą być jawnie włączone przez administratora.