[英]PHP curl - preparing graphql query string with variables
我有这个 graphql 请求字符串:
$data_string = '{"query":"query {\n search(input: {\n projectId: \"'.$project_id.'\",\n search: \"'
.$expr.'\",\n limit: '.$page_size.',\n offset: '.$offset.'\n }) {\n total\n result\n }\n}"}';
我想接下来的事情:
$data_string = '{"query":"query {
search(input: {
projectId: \"'.$project_id.'\",
search: \"'.$expr.'\",
limit: '.$page_size.',
offset: '.$offset.'
}) {
total
result
}
}"}';
但是,由于某种原因,它不起作用。
这是我提出请求的方式:
$ch = curl_init($search_api_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
PS 我是 PHP 新手
感谢https://stackoverflow.com/users/6124657/xadm
这可能是在没有额外库和良好可读性的情况下发出 GraphQL 请求的最佳方式
我的代码现在看起来像这样:
$data_string = json_encode([
"query" => "query SEARCH(\$input: SearchInput!) {
search(input: \$input) {
total
result
}
}",
"variables" => [
"input" => [
"projectId" => $project_id,
"search" => $expr,
"limit" => $page_size,
"offset" => $offset
]
]
]);
$ch = curl_init($search_api_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.