API dla WordPress

Gato GraphQL vs WP REST API

Porównanie Gato GraphQL i WP REST API

Gato GraphQL vs WP REST API
plus image
Gato GraphQL vs WP REST API

Różnice między interfejsami API REST i GraphQL są ogólnie trafne przy porównaniu WP REST API z Gato GraphQL.

Dzięki GraphQL możesz wykonać spersonalizowane zapytanie GraphQL (query) do punktu końcowego (endpoint), wskazując dokładnie, jakich danych potrzebujesz, i pobierając tylko te dane w ramach jednego żądania.

Na przykład poniższe zapytanie GraphQL pobierze wymagane dane dla konkretnego wpisu, w tym dane z jego relacji (autor, kategorie i tagi), wszystko w ramach jednego żądania:

query {
  post(by: { id: 1 }) {
    title
    content
    url
    date
    author {
      id
      name
    }
    categories {
      id
      name
    }
    tags {
      id
      name
    }
  }
}

Aby pobrać te same dane za pomocą REST, może być konieczne najpierw wykonanie żądania w celu pobrania danych wpisu, a następnie oddzielnego żądania dla każdej z jego relacji (autor, kategorie i tagi).

Te architektoniczne różnice między REST a GraphQL zostały szeroko omówione w innych miejscach, dlatego od tej chwili nie będziemy ich tu powtarzać.

Poniżej przeprowadzimy bardziej szczegółowe porównanie Gato GraphQL + wszystkich rozszerzeń z WP REST API.

Tabela podsumowująca

FunkcjaGato GraphQLWP REST API
Pobieranie danychWykonuje spersonalizowane queries GraphQL do endpointu, pobierając określone dane w ramach jednego żądania.Wymaga wielu żądań do różnych endpointów, aby pobrać powiązane dane (np. dane wpisu, dane autora, kategorie i tagi).
EndpointyObsługuje Persisted Queries, czyli endpointy z predefiniowanymi danymi tworzone przy użyciu języka GraphQL za pomocą interfejsu użytkownika w obszarze wp-admin, bez konieczności wdrażania kodu.Udostępnia dane poprzez endpointy REST, każdy z własnym adresem URL i predefiniowanymi danymi, tworzonymi za pomocą kodu PHP i wdrażanymi w motywie lub wtyczce.
Kontrola dostępuZapewnia elastyczność dzięki kontroli dostępu na poziomie pola, opartej na regułach (np. role użytkowników, uprawnienia, zakres adresów IP).Ogranicza dane na podstawie parametru context (np. view dla niezalogowanych użytkowników, edit dla zalogowanych użytkowników z uprawnieniami).
Operacje zbiorczeObsługuje Multiple Query Execution, gdzie jeden dokument GraphQL może wykonywać wiele operacji współdzielących stan za pomocą dyrektywy @export, co stanowi ulepszenie w stosunku do batch requests.Umożliwia batch requests, gdzie wiele żądań jest obsługiwanych wewnętrznie w ramach jednego żądania HTTP.
Zarządzanie witrynąMoże pobierać dane, modyfikować je i zapisywać z powrotem w ramach jednego dokumentu GraphQL za pośrednictwem interfejsów użytkownika, umożliwiając automatyzację i zarządzanie witrynami WordPress. Może wykonywać zadania wielu wtyczek, takich jak duplikowanie, automatyzacja, tworzenie kopii zapasowych, wyszukiwanie/zastępowanie, webhooks i tłumaczenie. Jest API i czymś więcej.Przede wszystkim API do uzyskiwania dostępu do danych WordPress i ich modyfikacji.
OgólnośćOgólne narzędzie do zarządzania witrynami WordPress, zdolne do mutacji danych i integracji z usługami stron trzecich za pomocą queries GraphQL.Skupione na dostarczaniu API; wymaga dodatkowych wtyczek lub niestandardowego kodu, aby osiągnąć podobne funkcjonalności.

Podsumowanie kluczowych punktów:

  • Pobieranie danych: Gato GraphQL używa spersonalizowanych queries, podczas gdy WP REST API używa wielu żądań do endpointów.
  • Endpointy: Gato GraphQL używa persisted queries tworzonych przez interfejs użytkownika, podczas gdy WP REST API używa endpointów REST kodowanych w PHP.
  • Kontrola dostępu: Gato GraphQL oferuje kontrolę na poziomie pola, podczas gdy WP REST API używa parametru context.
  • Operacje zbiorcze: Gato GraphQL używa Multiple Query Execution, a WP REST API używa batch requests.
  • Zarządzanie witryną: Gato GraphQL jest kompleksowym narzędziem, a WP REST API jest przede wszystkim API.

Dostęp do predefiniowanych danych

Dzięki WP REST API udostępniasz dane przez endpointy REST. Każdy endpoint ma własny adres URL, a jego dane są predefiniowane (dla odpowiednich zasobów, takich jak wpisy lub użytkownicy).

Podobnie jak endpointy REST, Gato GraphQL obsługuje Persisted Queries, które są również endpointami z predefiniowanymi danymi. Wywołanie persisted query przez GET wykona zapisane zapytanie GraphQL i zwróci oczekiwaną odpowiedź JSON:

Wykonywanie persisted query w przeglądarce
Wykonywanie persisted query w przeglądarce

Różnica między nimi polega na tym, że endpointy REST API są tworzone za pomocą kodu PHP i muszą być wdrożone w motywie lub wtyczce, podczas gdy persisted queries Gato GraphQL są tworzone przy użyciu języka GraphQL i publikowane przez interfejs użytkownika (oparty na edytorze WordPress) w obszarze wp-admin, bez konieczności wdrażania jakiegokolwiek kodu.

Edytor persisted queries
Edytor persisted queries

Te same mechanizmy buforowania można stosować zarówno do endpointów REST, jak i do persisted queries GraphQL. Ponieważ persisted query jest dostępna pod własnym endpointem, jej odpowiedź może być buforowana przy użyciu standardowego buforowania HTTP (PRO).

Kontrola dostępu

Ograniczanie danych w WP REST API zależy od parametru context. Przekazanie ?context=view zwraca dane dla niezalogowanych użytkowników, a ?context=edit zawiera dodatkowe dane dla zalogowanych użytkowników (z odpowiednimi uprawnieniami), takie jak pole content.raw wpisu.

Gato GraphQL zapewnia znacznie większą elastyczność — każde pojedyncze pole jest dostępne lub niedostępne na podstawie reguł Kontroli dostępu. Możesz sprawdzać, czy tylko zalogowani użytkownicy, użytkownicy z określoną rolą lub uprawnieniem, bądź odwiedzający z określonego zakresu adresów IP mogą uzyskać dostęp do konkretnego pola (PRO).

Edytor listy kontroli dostępu
Edytor listy kontroli dostępu

Operacje zbiorcze

WP REST API umożliwia wykonywanie batch requests, gdzie wiele żądań jest obsługiwanych wewnętrznie w ramach jednego żądania HTTP.

Gato GraphQL udostępnia Multiple Query Execution, gdzie jeden dokument GraphQL może wykonywać wiele operacji.

Multiple Query Execution stanowi ulepszenie w stosunku do batch requests, ponieważ operacje mogą współdzielić stan za pomocą dyrektywy @export.

Na przykład, aby zduplikować wpis, operacja query pobiera dane wpisu i przekazuje je do operacji mutation, która tworzy nowy wpis na ich podstawie:

query GetPostAndExportData($postId: ID!)
{
  post(by: { id: $postId }, status: any) {
    author {
      id @export(as: "authorID")
    }
    categories {
      id @export(as: "categoryIDs", type: LIST)
    }
    rawContent @export(as: "rawContent")
    rawExcerpt @export(as: "excerpt")
    featuredImage {
      id @export(as: "featuredImageID")
    }
    tags {
      id @export(as: "tagIDs", type: LIST)
    }
    rawTitle @export(as: "title")
  }
}
 
mutation DuplicatePost
  @depends(on: "GetPostAndExportData")
{
  createPost(input: {
    status: draft,
    authorBy: {
      id: $authorID
    },
    categoriesBy: {
      ids: $categoryIDs
    },
    contentAs: {
      html: $rawContent
    },
    excerpt: $excerpt
    featuredImageBy: {
      id: $featuredImageID
    },
    tagsBy: {
      ids: $tagIDs
    },
    title: $title
  }) {
    postID
  }
}

Zarządzanie witryną WordPress

Gato GraphQL pozwala nam pobierać dane z bazy danych, modyfikować je według potrzeb i zapisywać z powrotem, wszystko w ramach jednego dokumentu GraphQL.

Osiąga się to za pomocą interfejsów użytkownika służących do tworzenia i publikowania queries GraphQL, konfigurowania endpointów według potrzeb oraz automatyzowania wykonywania zapytania, gdy zajdzie jakieś zdarzenie.

To wszystko oznacza, że Gato GraphQL jest ogólnym narzędziem do zarządzania naszymi witrynami WordPress, obsługującym przypadki użycia, w których dane (czy to z witryny WordPress, czy dostarczone przez usługi stron trzecich) muszą być mutowane, co można osiągnąć przez wykonanie odpowiedniego zapytania GraphQL.

Zwróć uwagę, jak Gato GraphQL może realizować funkcjonalności wielu wtyczek:

WP REST API jest tylko tym — API.

Gato GraphQL jest również API, ale także czymś znacznie więcej.

Zapisz się do naszego newslettera

Bądź na bieżąco ze wszystkimi aktualizacjami Gato GraphQL.