Pierwsze kroki
Pierwsze krokiWprowadzenie do GraphQL i Gato GraphQL

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.