Hai sentito parlare di GraphQL?
GraphQL è un moderno linguaggio di query per l’API. In un’altra parola, possiamo dire che è un moderno linguaggio di query a livello di applicazione.
Con l’aiuto di GraphQL, possiamo recuperare i dati dalle chiamate API e funziona su HTTP come REST. Fornisce la potente opzione al cliente in modo che chieda esattamente ciò di cui ha bisogno e aiuta nella crescita o nella valutazione dell’API.
Vantaggi di GraphQL
- Fornisce solo dati limitati di cui abbiamo effettivamente bisogno. Non recupererà mai dati aggiuntivi o meno dati di cui non hai bisogno.
- È un potente sistema open source.
- Dà un’opzione per eseguire la codifica efficiente. Ad esempio, supponiamo una colonna di tabella 40 e talvolta abbiamo bisogno dei dati di solo 10 colonne o talvolta 20 ecc. Per risolvere questo problema abbiamo due opzioni nell’API normale, o recuperare tutti i dati in ogni chiamata API e utilizzare quelli che vogliamo o è necessario scrivere il numero di API per la stessa tabella in modo da poter chiamare l’API efficiente secondo il requisito. Ma in GraphQL, dobbiamo scrivere solo un’API. Quindi anche il codice di linea viene ridotto.
- Le API GraphQL sono strutturate in termini di tipi e campi.
GraphQL ha per supporta vari linguaggi come
- C#
- . NET
- Clojure
- Elisir
- Erlang
- Go
- Groovy
- Java
- JavaScript
- PHP
- Python
- Scala
- Rubino
In questo blog impareremo a conoscere GraphQL in PHP.
Innanzitutto dovremmo sapere, in qualsiasi lingua per utilizzare GraphQL dobbiamo importare la loro libreria.
In PHP, possiamo usare questo file di libreria: webonyx/graphql-php.
Installazione
Usando il compositore, esegui semplicemente:
compositore richiede webonyx/graphql-php
In che modo GraphQL recupera i dati con le query?
In REST, l’API restituisce i dati in una struttura definita. Durante la scrittura dell’API in REST dobbiamo definire la struttura dei dati cosa restituirà ma GraphQL non ha una struttura definita che restituirà. Può cambiare la loro struttura secondo le esigenze del cliente.
Il client deve inviare alcune informazioni in più al server per dichiarare i propri requisiti e questa informazione è chiamata Query.
Nella Query, dobbiamo definire i Root Fields nell’altra parola diciamo lo stesso del payload per il servizio.
risolvere
Nell’applicazione del mondo reale come l’applicazione di e-commerce, ad esempio PrestaShop, OpenCart, Magneto ecc., dobbiamo recuperare i dati del cliente dal database tramite customerId e restituire gli stessi. Il nostro punto è che non dobbiamo restituire gli array, dobbiamo restituire i valori e “graphql-php” lo passerà intatto ai risolutori nidificati.
Il risolutore è fondamentalmente una funzione di richiamata per ogni campo. C’è sempre un risolutore predefinito per tutti i campi. Quando definiamo la nostra funzione di “risoluzione” per un campo, sostituiamo semplicemente il risolutore predefinito.
Come definire lo schema per la query?
$schema_obj = nuovo schema { "query" => $queryType, "mutation" => $mutationType, "subscription" => $subscriptionType }
Esempio
Poiché questo è un blog per principianti o più freschi, facciamo un semplice esempio.
Creiamo un sistema di tipi che verrà elaborato seguendo una semplice query:
query { echo(messaggio: "Ciao Knowband, questo è il mio primo programma GraphQL") }
Nota: Abbiamo bisogno di un tipo di oggetto con eco di campo per farlo.
'Query', 'fields' => [ 'echo' => [ 'type' => Type::string(), 'args' => [ 'message' => Type::nonNull(Type::string() ), ], 'resolve' => funzione ($root, $args) { return $root['prefix'] . $args['messaggio']; } ], ], ]);
L’opzione�risolvere�è�molto�importante�l’opzione�della�definizione�del�campo.�È�una�che�è�responsabile�di�restituire�il�valore�del�nostro�campo.� I valori�dei�campi�scalari�saranno�direttamente�inclusi�in�risposta�mentre�i�valori�dei�campi�composti�verranno�trasmessi�al� risolutori di campi nidificati. I campi compositi sono interfacce, unioni, oggetti ecc.
Ora�dopo�che�il�nostro�tipo�diventa�pronto,�scriviamo�il file�endpoint�GraphQL�per�esso�graphql_program_1.php.
$tipo di query]); $Input = file_get_contents('php://input'); $input_data = json_decode($Input, vero); $dati_ricerca = $dati_input['richiesta']; $valori_variabili = isset($dati_input['variabili']) ? $input_data['variabili'] : null; $valore = ['prefisso' => 'Uscita: ']; $risultato = GraphQL::executeQuery($schema_obj, $dati_query, $valore, nullo, $valori_variabili); $valore_output = $risultato->toArray(); } catch (\Exception $e) { $output_value = [ 'errori' => [ [ 'messaggio' => $e->getMessage() ] ] ]; } header('Tipo di contenuto: application/json'); echo json_encode($output_value); ?>
Come possiamo eseguire il codice?
Possiamo eseguire il codice da:
php -S localhost:8080 graphql_program_1.php curl https://localhost:8080 -d '{"query": "query { echo(message: \" Ciao Knowband, questo è il mio primo programma GraphQL \") }" }'
Per qualsiasi domanda, non esitare a contattarci all’indirizzo support@knowband.com. Knowband offre i migliori moduli della classe per Prestashop, Opencart, Magento e Magento 2. Dai un’occhiata a uno dei nostri più popolari per Prestashop chiamato One page supercheckout: