GraphQL z Drupal 8 : Przewodnik po wszystkich sprawach (z przykładami!)
Opublikowany: 2019-12-17GraphQL komunikuje się z Drupalem przez HTTP, a wyniki są bardziej ustrukturyzowane niż kiedykolwiek wcześniej!
W dzisiejszych czasach wspaniałe wrażenia klientów zaczynają się od świetnej treści. Treści udostępniane wszędzie. Dzięki inicjatywie API-first Drupala 8, zawartość zarządzana przez Drupala może być łatwo wykorzystywana przez inne systemy przez HTTP. REST (Representational State Transfer) zapewnia standard projektowania interfejsów API. Jednak w miarę jak aplikacje klienckie stają się coraz bardziej złożone i wymagające, programiści potrzebują bardziej nowoczesnego i efektywnego rozwiązania.

GraphQL narodził się z zapotrzebowania na bardziej elastyczną i wydajną interakcję klient-serwer. Jest to wyrafinowany język zapytań i maszyna wykonawcza. W 2012 roku Facebook stworzył dla niego specyfikację, która opisuje jego możliwości oraz wymagania modeli danych dla aplikacji headless.
Co to jest GraphQL?
GraphQL jest adaptacyjnym standardem dla interfejsów API i zapewnia środowisko wykonawcze do realizacji tych zapytań. GraphQL podaje pełne i rozsądne szczegóły informacji w Twoim API. Jest rozwijany zgodnie z ideologią „Zapytaj o to, czego potrzebujesz i zdobądź dokładnie to”. Umożliwia klientowi pobranie dokładnej odpowiedzi z interfejsu API, nic więcej - nic mniej.
Zalety GraphQL
Kilka z wielu zalet korzystania z GraphQL dla Drupala -
- Szybszy rozwój frontendu
Szybko kładź nacisk na aplikacje, nie czekając na nowe punkty końcowe zaplecza. Usprawnij pobieranie danych i obsługę kodu, uzyskując dane w wymaganym kształcie. - Zapytaj o to, czego potrzebujesz i zdobądź dokładnie to
Zapewnia dokładną odpowiedź, o którą poprosił klient. Zawsze zwraca przewidywalny wynik. Aplikacje korzystające z GraphQL są również stabilne, ponieważ aplikacja kontroluje otrzymywane dane, a nie serwer. - Użyj swoich istniejących danych
GraphQL może być używany z dowolną istniejącą infrastrukturą, np. REST, SOAP lub istniejącą bazą danych lub cokolwiek innego. Umożliwia zapytanie o wszystkie dane w jednym żądaniu i zapewnia oczyszczoną, przewidywalną odpowiedź. - Mniej bajtów i podróży w obie strony
Używając GraphQL wszystkie wymagane dane można pobrać za pomocą pojedynczego zapytania. To sprawia, że
aplikacja szybciej.

GraphQL z Drupalem 8
REST vs JSON:API vs GraphQL
Jeśli porównamy te trzy pod kątem wydajności żądania, JSON:API i GraphQL są doskonałe. Ponieważ w jednym żądaniu JSON:API i GraphQl mogą obsłużyć wszystkie wymagane odpowiedzi. W przypadku JSON:API czasami musimy dostosować odpowiedź, ale jeśli chodzi o GraphQL, służy on tylko do tego, czego potrzebujemy. REST jest wolniejszy w porównaniu do tych, ponieważ do zaspokojenia wspólnych potrzeb potrzebnych jest wiele żądań.
Pod względem prostoty obsługi i implementacji REST jest najłatwiejszy, istnieje już od dłuższego czasu. JSON:API działa również po wyjęciu z pudełka z CDN i odwrotnymi proxy. Dla GraphQL potrzebna jest dodatkowa infrastruktura, a do jej wdrożenia potrzebne są biblioteki klienckie.
Łatwiej jest korzystać z pamięci podręcznej sieci w REST i JSON:API w porównaniu z GraphQL. W GraphQL jest tylko jeden punkt końcowy (w większości przypadków punkt końcowy HTTP POST), do którego wysyłane są wszystkie zapytania. Ponieważ każde zapytanie może być inne, korzystanie z tego typu buforowania jest trudniejsze.
Specyfikacja GraphQL Drupal obsługuje operacje zbiorcze/wsadowe automatycznie dla już zaimplementowanych mutacji, podczas gdy specyfikacja JSON:API nie. Możliwość wykonywania operacji zapisu wsadowego może być ważna.
Instalacja GraphQL dla Drupala 8
Moduł Drupal GraphQL obsługuje wszystkie specyfikacje GraphQL i może być używany do budowania i eksponowania schematów GraphQL. Najnowsza wersja alfa modułu Drupal 8 w wersji 8.x-4 oferuje modułom Drupal możliwość rozszerzenia schematu za pomocą wtyczki.
Tutaj możesz zainstalować moduł Drupal GraphQL z - https://www.drupal.org/project/graphql
Możesz zainstalować za pomocą polecenia kompozytora.
kompozytor wymaga 'drupal/graphql:^3.0'
Dostarczy Ci dwa moduły GraphQL Core i GraphQL . Musisz włączyć oba moduły. Możesz to włączyć za pomocą drush np.
drush pl graphql drush pl graphql_core
Zapytania z Drupal GraphQL
Moduł Drupal GraphQL udostępnia narzędzie o nazwie GraphiQL . Jest to potężne narzędzie i ma interaktywny interfejs użytkownika z funkcjami takimi jak automatyczne uzupełnianie. Za pomocą tego narzędzia możesz uruchamiać zapytania i uzyskiwać wyniki. Przejdź do – „ /graphql/explorer ” dla interfejsu.

Otrzymasz interfejs, który wygląda tak –

Interfejs użytkownika GraphiQL
W lewym panelu tego interfejsu użytkownika możesz napisać zapytanie, a po prawej stronie zobaczysz wyniki jako dane wyjściowe w formacie JSON. Kliknięcie Dokumentów w prawym górnym rogu spowoduje wyświetlenie dokumentacji dostępnych zapytań. Sekcja Zmienna zapytania w lewym dolnym panelu może służyć do przekazywania zmiennych zapytania.
Przykłady
1. Odpytywanie węzłów

Drupal GraphQL - Odpytywanie węzłów
2. Odpytywanie taksonomii

GraphQL w Drupalu — odpytywanie taksonomii
3. Zapytanie o trasy

Drupal GraphQL - Trasy zapytań
4. Fragmenty zapytań

Drupal GraphQL - Fragmenty zapytań
5.Filtry

Drupal GraphQL - Filtry
6. Filtry ze spójnikiem

Drupal GraphQL - Filtry z koniunkcją
Inni dostępni operatorzy to:
- RÓWNY
- NIE RÓWNE
- MNIEJSZY NIŻ
- SMALLER_THAN_OR_EQUAL
- LEPSZY NIŻ
- WIĘKSZY BĄDŹ RÓWNY
- W
- NIE W
- LUBIĆ
- NIE JAK
- POMIĘDZY
- NIE POMIĘDZY
- IS_NULL
- IS_NOT_NULL
Spójniki mogą mieć dwie wartości
- ORAZ
- LUB
Grup dyskusyjnych można również używać do pisania bardziej złożonych zapytań.
7. Zmienne GraphQL

GraphQL na Drupalu - Zmienne
Mutacje
W GraphQL mutacja jest terminologią używaną za każdym razem, gdy chcesz dodać, zmodyfikować lub usunąć dane przechowywane na serwerze. W tym przypadku Drupal. Niestety, moduł nie zawiera sposobu na wykonanie powszechnych mutacji prosto z pudełka ze względu na pewne wymagania techniczne GraphQL.
Przykładowy kod do tworzenia, usuwania, aktualizacji i przesyłania plików można znaleźć tutaj: https://github.com/drupal-graphql/graphql-examples
Przykładowa mutacja:

Drupal GraphQL - Przykład mutacji
Drupal GraphQL z Twig
Korzystanie z Drupal GraphQL z Twigiem może znacznie poprawić wydajność Twojej witryny. Oto jak – po wstrzyknięciu danych do szablonu Twig możesz pobrać wszystkie wymagane dane za pomocą jednego wywołania API. Co więcej, ponieważ to klient kontroluje otrzymywane dane, a nie serwer, sprawia to, że proces jest jeszcze szybszy.
Aby używać Drupal GraphQL z Twigiem, potrzebujemy modułu GraphQL Twig. Aby go pobrać i włączyć, użyj następujących poleceń:
kompozytor wymaga 'drupal/graphql_twig:^1.0' drush pl graphql_twig
A potem możesz użyć zapytania GraphQL w swojej witrynie, np.
{#graphql
zapytanie {
admin:userById(id: "1") {
uid
Nazwa
}
użytkownik:bieżącyKontekstUżytkownika {
uid
}
}
#}Otrzymasz dane odpowiedzi w zmiennej GraphQL.
