Google api php client 如何使用结果的'nextLink'属性?
查询结果对象返回时,将Google api php client 如何使用结果的'nextLink'属性?,google-api-php-client,Google Api Php Client,查询结果对象返回时,将nextLink设置为下一页结果的URL作为字符串或null,具体取决于当前页之后是否有另一页。文档对此非常清楚,但是没有关于如何获取该链接并对下一页提出另一个请求的内容 我一直在挖掘源代码,只发现似乎除了一个布尔值告诉我还有更多值之外,真的没有任何方法可以利用这个值。留下这样一个明显的松散的结尾,即使是在测试版API中,听起来也不像谷歌,所以我一定是错过了什么 按照我的代码设置方式,我不能只重用生成初始请求的请求数据。我有单独的逻辑来发出初始请求,并将结果集解析为可用的形
nextLink
设置为下一页结果的URL作为字符串或null,具体取决于当前页之后是否有另一页。文档对此非常清楚,但是没有关于如何获取该链接并对下一页提出另一个请求的内容
我一直在挖掘源代码,只发现似乎除了一个布尔值告诉我还有更多值之外,真的没有任何方法可以利用这个值。留下这样一个明显的松散的结尾,即使是在测试版API中,听起来也不像谷歌,所以我一定是错过了什么
按照我的代码设置方式,我不能只重用生成初始请求的请求数据。我有单独的逻辑来发出初始请求,并将结果集解析为可用的形式。这一点,并且知道链接是公开的,好像它是用来暗示有一种比修改初始请求更干净的方法。只是,我该怎么做呢?我有些东西似乎很管用。最重要的一点是在底部,在那里我使用
nextLink
并使用片段进行新的查询。这并不理想,但它比手动卷曲效果更好,其他在线工具似乎都表明了这一点Google\u Service\u Analytics\u GaData当然会因使用哪种服务而有所不同
do {
$rows = $results->getRows();
foreach ($rows as $row) {
$record = array();
foreach ($row as $i => $field) {
$name = $headers[$i]->name;
switch($headers[$i]->dataType) {
case 'FLOAT':
$record[$name] = (float) $field;
break;
case 'INTEGER':
$record[$name] = (int) $field;
break;
default:
$record[$name] = (string) $field;
}
}
$records[] = $record;
};
$nextLink = $results->getNextLink();
if ($nextLink) {
/* The GA API doesn't have anything to actually USE The link
* they so helpfully supply, so we have to disassemble it and
* make a new query off of it. Internally,
* $this->gaService->data_ga calls $this->gaService->call.
* These are on `Google_Service_Analytics_DataGa_Resource` and
* `Google_Service_Resource`, respectively.
*/
$options = [];
parse_str(substr($nextLink, strpos($nextLink, '?') + 1), $options);
$results = $this->gaService->data_ga->call('get', [$options], "Google_Service_Analytics_GaData");
}
} while ($nextLink);
我想您可能会特别关注contacts API。您可能希望尝试卷曲该新链接,以查看是否得到结果。我最近看过了。我还认为该对象上可能有一个getNext()调用,实际上是分析API。这些代码在不同的服务中应该是通用的,因为Google\u Service\u Analytics\u DataGa\u Resource
继承了几乎所有的Google\u Service\u Resource
。唯一的函数是get
(在GA对象上)和call
(在超类上)get
只是为call
设置一些参数,然后调用它。