Json и переменные GraphQL ожидают, что строка будет хешем - PullRequest
0 голосов
/ 19 июня 2020

Я использую GraphQL впервые, и, насколько я мог видеть, форматирование такое же, как Json. Но у меня ужасные времена, когда он работает правильно. Я использовал PostMan, чтобы убедиться, что мои запросы верны. Но когда беру его у Почтальона и пытаюсь запустить в PHP, у меня бесконечные проблемы.

Моя последняя попытка просмотра другого сообщения здесь заключалась в передаче запроса и переменных отдельно, но я продолжаю получать ответ:

{"errors":{"variables":"expected String to be a Hash"}}

Мой код:

 $query = <<<'JSON'
query ($first: Int, $sku: String)
{ productVariants(first: $first, query: $sku) {
    edges {
      node {
        title
        id
        sku
        product {
          title
        }
        inventoryItem {
          id
          inventoryLevels(first: 3) {
            edges {
              node {
                id
                available
                location {
                  id
                  name
                  address {
                    city
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
JSON;

            $variables = '{
  "first": 4,  
  "sku": "100560 OR 100559 OR 100558 OR 100557"
}';

curl_setopt_array($curl, array(
            CURLOPT_URL => "https://XXXXXXXXXXXXXXXXXXXXXXX.myshopify.com/admin/api/2020-04/graphql.json",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => $json,
            CURLOPT_HTTPHEADER => array(
                "Content-Type: application/json",
                "Cookie: __cfduid=d10b3b9586e13d4b79ffd43e3cdec77f21592474922"
            ),
        ));

        $response = curl_exec($curl);

У меня неправильное форматирование?

Вот исходная копия от Postman:

query ($first: Int, $sku: String)
{ productVariants(first: $first, query: $sku) {
    edges {
      node {
        title
        id
        sku
        product {
          title
        }
        inventoryItem {
          id
          inventoryLevels(first: 3) {
            edges {
              node {
                id
                available
                location {
                  id
                  name
                  address {
                    city
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Переменные:

{
  "first": 4,  
  "sku": "100560 OR 100559 OR 100558 OR 100557"
}

1 Ответ

0 голосов
/ 19 июня 2020

После сильной головной боли. Казалось бы, переменные просто нужно отформатировать в массиве.

$variables = array(
    "first" => 4,
    "sku" => "100560 OR 100559 OR 100558 OR 9995565"
);

Надеюсь, это поможет кому-то другому, столкнувшемуся с той же ошибкой. Не уверен, почему там написано Ha sh, такая ошибочная ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...