Я пытаюсь синхронизировать несколько событий из Outlook в моей локальной БД, и я вызываю API, как показано ниже:
$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
. '?startDateTime=' . $start_datetime
. '&endDateTime=' . $end_datetime
Это дает мне все события из Outlook между двумя конкретными датами.
Затем я иду и сохраняю все эти события, используя код ниже. Проблема в том, что он возвращает только 10 событий одновременно.
$http = new \Http_Curl();
$http->set_headers( $this->get_headers() );
$response = $http->get( $url );
$data = array();
$continue = true;
while ( $continue ) {
if ( isset($response->value) ) {
$arr = array();
foreach ( $response->value as $event ) {
$arr[] = $event;
}
$data = array_merge( $data, $arr );
}
$property = '@odata.nextLink';
if ( isset( $response->$property ) ) {
$url = $response->$property;
$response = $http->get( $url );
} else {
$continue = false;
}
}
unset( $http );
return $data;
Затем я попытался вызвать API, как показано ниже, установив для параметра top значение 10, но в результате я получил много пустых событий.
$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
. '?startDateTime=' . $start_datetime
. '&endDateTime=' . $end_datetime
.'&top=100'
Я стараюсь избегать более 60 звонков в минуту. Есть ли способ сначала получить количество событий между двумя датами, а затем получить их все, так что top
Параметр должен фактически быть общим количеством событий.
Правильный параметр запроса $top
и не top
, уведомление $
там.
5.1.5 Параметры системных запросов $ top и $ skip
Опция системного запроса $ top запрашивает количество элементов в запрашиваемой коллекции, которые будут включены в результат. Опция $ skip query запрашивает количество элементов в запрашиваемой коллекции, которые должны быть пропущены и не включены в результат. Клиент может запросить определенную страницу элементов, комбинируя $ top и $ skip.
Семантика $ top и $ skip описана в документе [OData-Protocol]. Синтаксические правила top и skip [OData-ABNF] определяют формальную грамматику параметров запроса $ top и $ skip соответственно.
Других решений пока нет …