How to use GraphQL in PHP?

How to use GraphQL in PHP?


Haben Sie schon von GraphQL gehört?

Wie verwende ich GraphQL in PHP?

GraphQL ist eine moderne Abfragesprache für die API. Mit anderen Worten, wir können sagen, dass es sich um eine moderne Abfragesprache auf Anwendungsebene handelt.

Mit Hilfe von GraphQL können wir Daten aus den API-Aufrufen abrufen und es funktioniert auf HTTP als REST. Es bietet dem Kunden eine leistungsstarke Option, damit er fragt, was er genau braucht, und es hilft beim API-Wachstum oder der Evaluierung.

Vorteile von GraphQL

Vorteile des GraphQl

  • Es liefert nur begrenzt Daten, die wir tatsächlich benötigen. Es werden niemals zusätzliche Daten oder weniger Daten abgerufen, die Sie nicht benötigen.
  • Es ist ein leistungsstarkes Open-Source-System.
  • Es bietet die Möglichkeit, die effiziente Codierung durchzuführen. Angenommen, eine Tabelle mit 40 Spalten und manchmal benötigen wir die Daten von nur 10 Spalten oder manchmal 20 usw. Um dieses Problem zu lösen, haben wir in der normalen API zwei Optionen, entweder alle Daten in jedem API-Aufruf abrufen und alle gewünschten oder wir verwenden müssen die Anzahl der APIs für dieselbe Tabelle schreiben, damit wir die effiziente API gemäß den Anforderungen aufrufen können. Aber in GraphQL müssen wir nur eine API schreiben. So wird auch der Zeilencode reduziert.
  • GraphQL-APIs sind nach Typen und Feldern strukturiert.

Von GraphQL unterstützte Sprache

GraphQL unterstützt verschiedene Sprachen wie z

  • C#
  • .NETZ
  • Clojure
  • Elixier
  • Erlang
  • Go
  • Groovy
  • Java
  • JavaScript
  • PHP
  • Python
  • Scala
  • Rubin

In diesem Blog werden wir etwas über GraphQL in PHP erfahren.

Zunächst sollten wir wissen, dass wir in jeder Sprache, um GraphQL zu verwenden, ihre Bibliothek importieren müssen.

In PHP können wir diese Bibliotheksdatei verwenden: webonyx/graphql-php.

Installation

Führen Sie mit Composer einfach Folgendes aus:

Komponist benötigt webonyx/graphql-php

Wie holt GraphQL Daten mit Abfragen?

In REST gibt die API Daten in einer definierten Struktur zurück. Beim Schreiben der API in REST müssen wir die Struktur der Daten definieren, die zurückgegeben werden, aber GraphQL hat keine definierte Struktur, die zurückgegeben wird. Es kann ihre Struktur nach Kundenwunsch ändern.

Der Client muss einige weitere Informationen an den Server senden, um seine Anforderungen zu deklarieren, und diese Informationen werden als Abfrage bezeichnet.

In der Abfrage müssen wir die Root-Felder definieren, mit anderen Worten, wir sagen dasselbe wie die Nutzlast für den Dienst.

lösen

Resolver in GraphQL PHL

In der realen Anwendung wie E-Commerce-Anwendung, dh PrestaShop, OpenCart, Magneto usw., müssen wir die Kundendaten anhand der Kunden-ID aus der Datenbank abrufen und diese zurückgeben. Unser Punkt ist, dass wir die Arrays nicht zurückgeben müssen, wir müssen die Werte zurückgeben und „graphql-php“ wird sie unverändert an verschachtelte Resolver weitergeben.

Der Resolver ist im Grunde eine Rückruffunktion für jedes Feld. Es gibt immer einen Standardresolver für alle Felder. Wenn wir unsere eigene „Resolve“-Funktion für ein Feld definieren, überschreiben wir einfach den Standard-Resolver.

Wie definiere ich ein Schema für die Abfrage?

$schema_obj = neues Schema { "query" => $queryType, "mutation" => $mutationType, "subscription" => $subscriptionType }

Beispiel

Da dies ein Blog für Anfänger oder Neulinge ist, machen wir ein einfaches Beispiel.

Lassen Sie uns ein Typsystem erstellen, das die folgende einfache Abfrage verarbeiten soll:

query { echo(message: "Hallo Knowband, das ist mein erstes GraphQL-Programm") }

Hinweis: Dazu benötigen wir einen Objekttyp mit Feldecho.

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

Die Option�auflösen�ist�eine�sehr�wichtige�Option�der�Felddefinition�.�Sie�ist�eine�,�die�für�die�Rückgabe�des�Werts�unseres�Felds�verantwortlich�ist.� Werte�der�skalaren�Felder�werden�direkt�in�die�Antwort�einbezogen,�während�die�Werte�der�zusammengesetzten�Felder�an�die�weitergegebenwerden verschachtelte�Feldresolver.�Zusammengesetzte�Felder�sind�Schnittstellen,�Unions,�Objekte�etc.

Jetzt� nachdem�unser�Typ�bereitgestelltist,�schreiben�wir�die�GraphQL-Endpunktdatei�dafür�graphql_program_1.php.

$queryType ]); $Input = file_get_contents('php://input'); $input_data = json_decode($Eingabe, wahr); $query_data = $input_data['Abfrage']; $variable_values ​​= isset($input_data['variables']) ? $input_data['Variablen'] : null; $value = ['prefix' => 'Ausgabe: ']; $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('Content-Type: application/json'); echo json_encode($output_value); ?>

Wie können wir den Code ausführen?

Wir können den Code ausführen durch:

php -S localhost:8080 graphql_program_1.php curl https://localhost:8080 -d '{"query": "query { echo(message: \" Hallo Knowband, dies ist mein erstes GraphQL-Programm \") }" }'

Bei Fragen können Sie uns gerne unter support@knowband.com erreichen. Knowband bietet die besten Module für Prestashop, Opencart, Magento und Magento 2. Werfen Sie einen Blick auf eines unserer beliebtesten für Prestashop namens 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 *