Você já ouviu falar do GraphQL?
GraphQL é uma linguagem de consulta moderna para a API. Em outras palavras, podemos dizer que é uma linguagem de consulta de camada de aplicação moderna.
Com a ajuda do GraphQL, podemos buscar dados das chamadas da API e ele funciona no HTTP como REST. Ele fornece a opção poderosa ao cliente para que ele pergunte o que exatamente precisa e ajuda no crescimento ou avaliação da API.
Benefícios do GraphQL
- Ele fornece apenas dados limitados de que realmente precisamos. Ele nunca buscará dados extras ou menos dados que você não precisa.
- É um poderoso sistema de código aberto.
- Dá uma opção para fazer a codificação eficiente. Por exemplo, suponha uma tabela de 40 colunas e às vezes precisamos dos dados de apenas 10 colunas ou às vezes 20 etc. Para resolver este problema temos duas opções na API normal, ou buscar todos os dados em cada chamada de API e usar qualquer temos que escrever o número de APIs para a mesma tabela para que possamos chamar a API eficiente conforme o requisito. Mas no GraphQL, temos que escrever apenas uma API. Portanto, o código de linha também é reduzido.
- As APIs do GraphQL são estruturadas em termos de tipos e campos.
GraphQL tem suporte para várias linguagens como
- C#
- . NET
- Clojure
- Elixir
- Erlang
- Go
- Groovy
- Java
- JavaScript
- PHP
- Python
- Scala
- Rubi
Neste blog, aprenderemos sobre o GraphQL em PHP.
Primeiramente devemos saber, em qualquer linguagem para usar GraphQL temos que importar sua biblioteca.
Em PHP, podemos usar este arquivo de biblioteca: webonyx/graphql-php.
Instalação
Usando o compositor, basta executar:
compositor requer webonyx/graphql-php
Como o GraphQL busca dados com consultas?
No REST, a API retorna dados em uma estrutura definida. Ao escrever a API em REST, temos que definir a estrutura de dados o que ela retornará, mas o GraphQL não possui uma estrutura definida que ela retornará. Pode alterar sua estrutura conforme a necessidade do cliente.
O cliente precisa enviar mais algumas informações ao servidor para declarar seus requisitos e essa informação é chamada de Consulta.
Na Consulta, temos que definir os Campos Raiz, ou seja, dizemos o mesmo que carga útil para o serviço.
Resolver
No aplicativo do mundo real, como o aplicativo de comércio eletrônico, ou seja, PrestaShop, OpenCart, Magneto, etc., precisamos buscar os dados do cliente do banco de dados por customerId e retornar o mesmo. Nosso ponto é que não temos que retornar os arrays, temos que retornar os valores e o graphql-php irá passá-lo intocado para os resolvedores aninhados.
O resolvedor é basicamente uma função de retorno de chamada para cada campo. Há sempre um resolvedor padrão para todos os campos. Quando definimos nossa própria função de resolução para um campo, simplesmente sobrescrevemos o resolvedor padrão.
Como definir o esquema para consulta?
$schema_obj = new Schema { "query" => $queryType, "mutation" => $mutationType, "subscription" => $subscriptionType }
Exemplo
Como este é um blog para iniciantes ou novatos vamos fazer um exemplo simples.
Vamos criar um sistema de tipos que processará a seguinte consulta simples:
query { echo(message: "Oi Knowband, este é meu primeiro programa GraphQL") }
Observação: Precisamos de um tipo de objeto com eco de campo para fazer isso.
'Query', 'fields' => [ 'echo' => [ 'type' => Type::string(), 'args' => [ 'message' => Type::nonNull(Type::string() ), ], 'resolver' => function ($root, $args) { return $root['prefix'] . $args['mensagem']; } ], ], ]);
A opção �resolver�é�muito�importante�opção�de�definição de campo. Os valores dos campos escalares serão diretamente incluídos na resposta, enquanto os valores dos campos compostos serão passados para baixo para os campos resolvedores de campos aninhados. Campos compostos são interfaces, uniões, objetos, etc.
Agora, depois que nosso tipo estiver pronto, vamos escrever o arquivo de ponto final do GraphQL para ele graphql_program_1.php.
$queryType ]); $Input = file_get_contents('php://input'); $input_data = json_decode($Input, true); $query_data = $input_data['query']; $variable_values = isset($input_data['variables']) ? $input_data['variables'] : null; $valor = ['prefixo' => 'Saída: ']; $resultante = GraphQL::executeQuery($schema_obj, $query_data, $value, null, $variable_values); $output_value = $resultante->toArray(); } catch (\Exception $e) { $output_value = [ 'errors' => [ [ 'message' => $e->getMessage() ] ] ]; } header('Content-Type: application/json'); echo json_encode($output_value); ?>
Como podemos executar o código?
Podemos executar o código por:
php -S localhost:8080 graphql_program_1.php curl https://localhost:8080 -d '{"query": "query { echo(message: \" Oi Knowband, este é meu primeiro programa GraphQL \") }" }'
Para qualquer dúvida, sinta-se à vontade para nos contatar em support@knowband.com. A Knowband está fornecendo os melhores módulos da classe para Prestashop, Opencart, Magento e Magento 2. Dê uma olhada em um dos mais populares para Prestashop chamado Supercheckout de uma página: