Last active
March 15, 2024 18:04
-
-
Save dunglas/f2e756725b1b842331dc8cdd38b4cc75 to your computer and use it in GitHub Desktop.
A GraphQL client using the Symfony HttpClient component
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$query = <<<'GRAPHQL' | |
query GetUser($user: String!) { | |
user (login: $user) { | |
name | |
repositoriesContributedTo { | |
totalCount | |
} | |
} | |
} | |
GRAPHQL; | |
graphql_query('https://api.github.com/graphql', $query, ['user' => 'dunglas'], 'my-oauth-token'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// composer require symfony/http-client | |
require __DIR__.'/vendor/autoload.php'; | |
use Symfony\Component\HttpClient\HttpClient; | |
use Symfony\Component\HttpClient\HttpOptions; | |
function graphql_query(string $endpoint, string $query, array $variables = [], ?string $token = null): array | |
{ | |
$options = (new HttpOptions()) | |
->setJson(['query' => $query, 'variables' => $variables]) | |
->setHeaders([ | |
'Content-Type' => 'application/json', | |
'User-Agent' => 'Symfony GraphQL client' | |
]) | |
; | |
if (null !== $token) { | |
$options->setAuthBearer($token); | |
} | |
return HttpClient::create() | |
->request('POST', $endpoint, $options->toArray()) | |
->toArray() | |
; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The requests of this example service are profiled in Symfony 5.3 debug toolbar.