How to use GraphQL in PHP?

How to use GraphQL in PHP?


¿Has oído hablar de GraphQL?

¿Cómo usar GraphQL en PHP?

GraphQL es un lenguaje de consulta moderno para la API. En otras palabras, podemos decir que es un lenguaje de consulta de capa de aplicación moderno.

Con la ayuda de GraphQL, podemos obtener datos de las llamadas API y funciona en HTTP como REST. Brinda la opción poderosa al cliente para que pregunte qué necesita exactamente y ayuda en el crecimiento o evaluación de la API.

Beneficios de GraphQL

Beneficios de GraphQl

  • Proporciona solo datos limitados que realmente necesitamos. Nunca obtendrá datos adicionales o menos datos que no necesita.
  • Es un potente sistema de código abierto.
  • Da una opción para hacer la codificación eficiente. Por ejemplo, supongamos que una tabla tiene 40 columnas y, a veces, necesitamos los datos de solo 10 columnas o, a veces, de 20, etc. Para resolver este problema, tenemos dos opciones en la API normal, recuperar todos los datos en cada llamada API y usar cualquiera tiene que escribir la cantidad de API para la misma tabla para que podamos llamar a la API eficiente según el requisito. Pero en GraphQL, tenemos que escribir solo una API. Entonces, el código de línea también se reduce.
  • Las API de GraphQL están estructuradas en términos de tipos y campos.

Idioma admitido por GraphQL

GraphQL tiene soporte para varios idiomas como

  • C#
  • .NET
  • Clojure
  • Elixir
  • Erlang
  • Go
  • Maravilloso
  • Java
  • JavaScript
  • PHP
  • Python
  • Scala
  • Rubí

En este blog, aprenderemos sobre GraphQL en PHP.

En primer lugar, debemos saber que en cualquier idioma para usar GraphQL tenemos que importar su biblioteca.

En PHP, podemos usar este archivo de biblioteca: webonyx/graphql-php.

INSTALACIÓN

Usando el compositor, simplemente ejecute:

el compositor requiere webonyx/graphql-php

¿Cómo GraphQL obtiene datos con consultas?

En REST, la API devuelve datos en una estructura definida. Mientras escribimos la API en REST, tenemos que definir la estructura de los datos que devolverá, pero GraphQL no tiene una estructura definida que devolverá. Puede cambiar su estructura según la necesidad del cliente.

El cliente tiene que enviar más información al servidor para declarar sus requisitos y esta información se llama Consulta.

En la consulta, tenemos que definir los campos raíz, es decir, decimos lo mismo que la carga útil del servicio.

Resolver

Resolver en GraphQL PHL

En la aplicación del mundo real, como la aplicación de comercio electrónico, es decir, PrestaShop, OpenCart, Magneto, etc., necesitamos obtener los datos del cliente de la base de datos por ID de cliente y devolverlos. Nuestro punto es que no tenemos que devolver las matrices, tenemos que devolver los valores y Graphql-php lo pasará intacto a los resolutores anidados.

El resolver es básicamente una función de devolución de llamada para cada campo. Siempre hay un solucionador predeterminado para todos los campos. Cuando definimos nuestra propia función de resolución para un campo, simplemente anulamos la resolución predeterminada.

¿Cómo definir el esquema para la consulta?

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

Ejemplo

Como este es un blog para principiantes o más nuevos, hagamos un ejemplo simple.

Vamos a crear un sistema de tipos que se procesará siguiendo una consulta simple:

consulta { echo(mensaje: "Hola Knowband, este es mi primer programa GraphQL") }

Nota: Necesitamos un tipo de objeto con eco de campo para hacerlo.

'Consulta', 'campos' => [ 'eco' => [ 'tipo' => Tipo::cadena(), 'argumentos' => [ 'mensaje' => Tipo::nonNull(Tipo::cadena() ), ], 'resolve' => function ($raíz, $argumentos) { return $raíz['prefijo'] . $argumentos['mensaje']; } ], ], ]);

La opción de resolución es una opción muy importante de definición de campo. Es una opción que es responsable de devolver el valor de nuestro campo. Los valores de los campos escalares se incluirán directamente en la respuesta, mientras que los valores de los campos compuestos se transmitirán a los resolutores de campos anidados. Los campos compuestos son interfaces, uniones, objetos, etc.

Ahora, después de que nuestro tipo esté listo, escribamos el archivo de puntos finales de GraphQL para el programa graphql_1.php.

$tipo de consulta]); $Entrada = file_get_contents('php://entrada'); $input_data = json_decode($Entrada, verdadero); $datos_consulta = $datos_entrada['consulta']; $valores_variables = isset($input_data['variables']) ? $input_data['variables'] : nulo; $valor = ['prefijo' => 'Salida: ']; $resultante = GraphQL::executeQuery($schema_obj, $query_data, $value, null, $variable_values); $valor_salida = $resultante->toArray(); } catch (\Exception $e) { $output_value = [ 'errores' => [ [ 'mensaje' => $e->getMessage() ] ] ]; } header('Tipo de contenido: aplicación/json'); echo json_encode($valor_salida); ?>

¿Cómo podemos ejecutar el código?

Podemos ejecutar el código por:

php -S localhost:8080 graphql_program_1.php curl https://localhost:8080 -d '{"consulta": "consulta { echo(mensaje: \" Hola Knowband, este es mi primer programa GraphQL \") }" }'

Para cualquier consulta, no dude en comunicarse con nosotros en support@knowband.com. Knowband proporciona los mejores módulos de su clase para Prestashop, Opencart, Magento y Magento 2. Eche un vistazo a uno de nuestros más populares para Prestashop llamado 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 *