尝试使用 PHP 向概念 API 发送查询
Trying to send Query to Notion API using PHP
我正在尝试使用概念 API 和 PHP 查询概念数据库。我能够连接到 API 没问题,但是我的 POST 请求似乎被忽略了,我只是得到一大堆数据,这对我一点帮助都没有。
针对此 POST 请求 (https://developers.notion.com/reference/post-database-query#post-database-query-filter),Notion 的 API 文档页面声明负载应如下所示:
{
"property": "Landmark",
"text": {
"contains": "Bridge"
}
}
目前我执行 PUT 的代码如下所示:
//connection information
$databaseId = "zzz";
$url = "https://api.notion.com/v1/databases/$databaseId/query"; //api endpoint
$token = 'zzx';
$version = '2021-08-16';
//post data
$data_array =
[
"property"=>"DataElement",
"title"=>["equals"=>"bigHouse"]
];
$data = json_encode($data_array);
//intialize cURL
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//below is for posting
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token,
'Notion-Version: '.$version));
$resp = curl_exec($ch);
if($e = curl_error($ch))
{
echo $e;
} else
{
$decoded = json_decode($resp, true);
var_dump($decoded);
}
//file_put_contents('test.json',json_encode($decoded, JSON_PRETTY_PRINT));
echo "<br>".$data;
curl_close($ch);
?>
出于安全原因,我已经删除了连接信息,但这不是问题所在。我正在从我的 POST 请求中获取所有 JSON 数据,但是我只是想获取与我的负载匹配的数据。 echo 和 var_dump 等最后的代码用于测试。
如果我回显 $data,我得到:
{"property":"DataElement","title":{"equals":"bigHouse"}}
其中,格式化后是 Notion 的 API 所需要的。我正在尝试搜索名为“DataElement”且类型为“Title”的概念数据库的第一列
任何帮助都会很有帮助。谢谢!
过滤器需要在 filter
参数中。
$data_array =
['filter' =>
[
"property"=>"DataElement",
"title"=>["equals"=>"bigHouse"]
]
];
见https://developers.notion.com/reference/post-database-query
我正在尝试使用概念 API 和 PHP 查询概念数据库。我能够连接到 API 没问题,但是我的 POST 请求似乎被忽略了,我只是得到一大堆数据,这对我一点帮助都没有。
针对此 POST 请求 (https://developers.notion.com/reference/post-database-query#post-database-query-filter),Notion 的 API 文档页面声明负载应如下所示:
{
"property": "Landmark",
"text": {
"contains": "Bridge"
}
}
目前我执行 PUT 的代码如下所示:
//connection information
$databaseId = "zzz";
$url = "https://api.notion.com/v1/databases/$databaseId/query"; //api endpoint
$token = 'zzx';
$version = '2021-08-16';
//post data
$data_array =
[
"property"=>"DataElement",
"title"=>["equals"=>"bigHouse"]
];
$data = json_encode($data_array);
//intialize cURL
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//below is for posting
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token,
'Notion-Version: '.$version));
$resp = curl_exec($ch);
if($e = curl_error($ch))
{
echo $e;
} else
{
$decoded = json_decode($resp, true);
var_dump($decoded);
}
//file_put_contents('test.json',json_encode($decoded, JSON_PRETTY_PRINT));
echo "<br>".$data;
curl_close($ch);
?>
出于安全原因,我已经删除了连接信息,但这不是问题所在。我正在从我的 POST 请求中获取所有 JSON 数据,但是我只是想获取与我的负载匹配的数据。 echo 和 var_dump 等最后的代码用于测试。 如果我回显 $data,我得到:
{"property":"DataElement","title":{"equals":"bigHouse"}}
其中,格式化后是 Notion 的 API 所需要的。我正在尝试搜索名为“DataElement”且类型为“Title”的概念数据库的第一列
任何帮助都会很有帮助。谢谢!
过滤器需要在 filter
参数中。
$data_array =
['filter' =>
[
"property"=>"DataElement",
"title"=>["equals"=>"bigHouse"]
]
];
见https://developers.notion.com/reference/post-database-query