У меня самое сложное время, чтобы выяснить, как правильно отформатировать POST-запрос мутации api graphql в php.
Если я жестко закодирую строку и использую ее в качестве данных в моем запросе POST, она работает следующим образом:
'{"query":"mutation{addPlay(input: {title: \"two\"}){ properties { title } } }"}'
Но если у меня есть массив php входных значений:
$test_data = array(
'title' => 'two'
);
Я не могу отформатировать это правильно. json_encode также помещает двойные кавычки вокруг ключей, которые graphql отклоняет с ошибкой Syntax Error GraphQL request (1:26) Expected Name, found String
,
В конечном итоге мне нужно решение, которое преобразует более крупный и сложный массив в нечто полезное.
Переформатирование запроса позволило мне использовать JSON напрямую.
Итак, мой новый запрос выглядит так:
$test_data = array(
'title' => 'two'
);
$request_data = array(
'query' => 'mutation ($input: PlayInput) { addPlay(input: $input) { properties { title } }}',
'variables' => array(
'input' => $test_data,
),
);
$request_data_json = json_encode($request_data);
Тогда $request_data_json
используется в запросе HTTP POST.
Других решений пока нет …