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: