How to use GraphQL in PHP?

Czy słyszałeś o GraphQL?

GraphQL to nowoczesny język zapytań dla API. Innymi słowy, możemy powiedzieć, że jest to nowoczesny język zapytań warstwy aplikacji.

Za pomocą GraphQL możemy pobierać dane z wywołań API i działa on na HTTP jako REST. Zapewnia klientowi potężną opcję, aby pytał, czego dokładnie potrzebuje, i pomaga we wzroście lub ocenie API.

Korzyści z GraphQL

  • Dostarcza tylko ograniczone dane, których faktycznie potrzebujemy. Nigdy nie pobierze żadnych dodatkowych danych ani mniej danych, których nie potrzebujesz.
  • Jest to potężny system open source.
  • Daje możliwość efektywnego kodowania. Załóżmy na przykład, że tabela zawiera 40 kolumn, a czasami potrzebujemy tylko 10 kolumn, czasami 20 itd. Aby rozwiązać ten problem, mamy dwie opcje w normalnym API, albo pobierz wszystkie dane w każdym wywołaniu API i użyj dowolnej, którą chcemy, albo musimy napisać liczbę interfejsów API dla tej samej tabeli, abyśmy mogli wywołać wydajne API zgodnie z wymaganiami. Ale w GraphQL musimy napisać tylko jedno API. Tak więc kod linii również zostaje skrócony.
  • Interfejsy API GraphQL są ustrukturyzowane pod względem typów i pól.

GraphQL obsługuje różne języki, takie jak

  • C#
  • . NET
  • Clojure
  • Eliksir
  • Erlang
  • Go
  • Groovy
  • Jawa
  • JavaScript
  • PHP
  • Python
  • Scala
  • Rubin

W tym blogu dowiemy się o GraphQL w PHP.

Po pierwsze powinniśmy wiedzieć, że w dowolnym języku, aby korzystać z GraphQL, musimy zaimportować ich bibliotekę.

W PHP możemy użyć tego pliku biblioteki: webonyx/graphql-php.

Instalacja

Używając kompozytora, po prostu uruchom:

kompozytor wymaga webonyx/graphql-php

Jak GraphQL pobiera dane za pomocą zapytań?

W REST API zwraca dane w określonej strukturze. Pisząc API w REST, musimy zdefiniować strukturę danych, jakie dane będą zwracane, ale GraphQL nie ma zdefiniowanej struktury, którą zwróci. Może zmienić ich strukturę zgodnie z potrzebami klienta.

Klient musi wysłać do serwera trochę więcej informacji, aby zadeklarować swoje wymagania, i ta informacja nazywa się Zapytanie.

W zapytaniu musimy zdefiniować pola główne, innymi słowy mówimy to samo, co ładunek dla usługi.

rozwiązać

W rzeczywistych aplikacjach takich jak aplikacje e-commerce tj. PrestaShop, OpenCart, Magneto itp. musimy pobrać dane klienta z bazy danych przez customerId i musimy je zwrócić. Naszym celem jest to, że nie musimy zwracać tablic, musimy zwracać wartości, a�graphql-php�przekaże je nietknięte do zagnieżdżonych programów tłumaczących.

Przelicznik jest w zasadzie funkcją oddzwaniania dla każdego pola. Dla wszystkich pól zawsze istnieje domyślny przelicznik. Kiedy definiujemy naszą własną funkcję�resolve� dla pola, po prostu zastępujemy domyślny resolver.

Jak zdefiniować schemat zapytania?

$schema_obj = nowy schemat { "query" => $queryType, "mutation" => $mutationType, "subscription" => $subscriptionType }

Przykład

Ponieważ jest to blog dla początkujących lub nowszych, zróbmy prosty przykład.

Stwórzmy system typów, który będzie przetwarzał następujące proste zapytanie:

query { echo(message: "Cześć Knowband, to jest mój pierwszy program GraphQL") }

Uwaga: W tym celu potrzebujemy typu obiektu z echem pola.

'Query', 'fields' => [ 'echo' => [ 'type' => Type::string(), 'args' => [ 'message' => Type::nonNull(Type::string() ), ], 'resolve' => function ($root, $args) { return $root['prefix'] . $args['wiadomość']; } ], ], ]);

Opcja �resolve� jest�bardzo ważną�opcją�definicji�pola.�Jest to� ta�,�która�jest�odpowiedzialna�za�zwrócenie�wartości�naszego�pola.� Wartości�pól�skalarnych�zostaną�bezpośrednio�uwzględnione�w�odpowiedzi�,podczas gdy�wartości�pól�kompozytowych�zostaną�przekazywane�do�� zagnieżdżone�pola�resolvers.�Pola złożone�są�interfejsami,�połączeniami�obiektami�itp.

Teraz�po�przygotowaniu�naszego�typu�napiszmy�plik�GraphQL�endpoint�dla�go�graphql_program_1.php.

$QueryType ]); $Input = file_get_contents('php://input'); $input_data = json_decode($Input, true); $query_data = $input_data['zapytanie']; $variable_values ​​= isset($input_data['variables']) ? $input_data['zmienne'] : null; $wartość = ['prefiks' => 'Wyjście: ']; $resultant = GraphQL::executeQuery($schema_obj, $query_data, $value, null, $variable_values); $output_value = $resultant->toArray(); } catch (\Exception $e) { $output_value = [ 'errors' => [ [ 'message' => $e->getMessage() ] ] ]; } header('Typ treści: aplikacja/json'); echo json_encode($wartość_wyjściowa); ?>

Jak możemy uruchomić kod?

Kod możemy uruchomić poprzez:

php -S localhost:8080 graphql_program_1.php curl https://localhost:8080 -d '{"query": "zapytanie { echo(wiadomość: \" Cześć Knowband, to jest mój pierwszy program GraphQL \") }" }'

W przypadku jakichkolwiek pytań prosimy o kontakt pod adresem support@knowband.com. Knowband zapewnia najlepsze w swojej klasie moduły dla Prestashop, Opencart, Magento i Magento 2. Zapoznaj się z jednym z naszych najpopularniejszych modułów Prestashop o nazwie One page supercheckout: