繁体   English   中英

PHP curl - 准备带有变量的graphql查询字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM