Я установил [guzzlehttp / guzzle] через composer в моем приложении laravel.
Я звоню в GraphQL API, используя Guzzle.
Ниже мой код для входа в систему:
public function guzzle_login($limit, $page, $searchText) {
$client = \Softonic\GraphQL\ClientBuilder::build('http://apiasr-preprod.adux.com/graphql');
$mutation = 'mutation {
login(input: {
username:"zzzzz.com",
password: "zzzzz"
}) {
access_token,
refresh_token,
expires_in
}
}';
$response = $client->query($mutation);
$access_token = $response->getData()['login']['access_token'];
$refresh_token = $response->getData()['login']['refresh_token'];
$expires_in = $response->getData()['login']['expires_in'];
return $response->getData()['login'];
}
Ниже приведен мой список всех функций инвентаризации:
public function get_inventories($limit, $page, $searchText, $access_token){
// echo "<pre>"; print_r($access_token); die;
$options = [
'headers' => [
'Authorization' => 'Bearer '.$access_token,
],
];
$client = \Softonic\GraphQL\ClientBuilder::build('http://apiasr-preprod.adux.com/graphql', $options);
$query = 'query{
xandrSites(first:'.$limit.', page:'.$page.'){
paginatorInfo {
count,
currentPage,
firstItem,
hasMorePages,
lastItem,
lastPage,
perPage,
total
}
data{
id, name, url
}
}
}';
$response = $client->query($query);
return $response->getData()['xandrSites'];
}
После входа в систему мне необходимо получить список инвентаризации с авторизованным токеном доступа. Так что я использовал обещание в жадности.
Ниже мой код:
public function test_async($limit, $page, $searchText) {
$client = \Softonic\GraphQL\ClientBuilder::build('http://apiasr-preprod.adux.com/graphql');
$mutation = 'mutation {
login(input: {
username:"adsalesreport@adux.com",
password: "Ae7GKeJZb4"
}) {
access_token,
refresh_token,
expires_in
}
}';
$response = $client->query($mutation);
$response = $response->getData();
$p = \GuzzleHttp\Promise\all($response)->then(function ($results) use($limit, $page) {
$options = [
'headers' => [
'Authorization' => 'Bearer '.$results['login']['access_token'],
],
];
$client = \Softonic\GraphQL\ClientBuilder::build('http://apiasr-preprod.adux.com/graphql', $options);
$query = 'query{
xandrSites(first:'.$limit.', page:'.$page.'){
paginatorInfo {
count,
currentPage,
firstItem,
hasMorePages,
lastItem,
lastPage,
perPage,
total
}
data{
id, name, url
}
}
}';
$response = $client->query($query);
$response = $response->getData()['xandrSites'];
return $response;
// print_r($response);die;
})->wait();
}
В приведенном выше коде, если я делаю print_r
, я печатаю данные, но если я делаю return
, я получаю ничего. Пожалуйста, помогите мне.