How to use GraphQL in PHP?

How to use GraphQL in PHP?


Czy słyszałeś o GraphQL?

Jak używać GraphQL w PHP?

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

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.

Język obsługiwany przez GraphQL

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ć

Resolver w GraphQL PHL

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:

 

Sunny Saurabh

Sunny Saurabh

Sunny Saurabh is an experienced Software engineer in C# and ASP.NET as well as an expert as a PHP developer. He has also expert in database design, server maintenance and security. He has achieved this goal only in the short span of 3yrs and still looking forward to achieving more in the IT industry. He lives in New Delhi and his hobby to write the technical writeups.

Leave a Reply

Your email address will not be published. Required fields are marked *