Я использую 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"
}