Получить события без даты начала и окончания

В API календаря Microsoft Graph я могу получить все события с URL-адресом запроса:

/me/calendarView/delta?startDateTime = {start_datetime}&endDateTime = {end_datetime}

Но я должен указать дату начала и окончания. Есть ли способ просто получить все события без указания дат?

Простое исключение дат из запроса дает мне ошибку, что в нем отсутствуют эти параметры.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
328
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Конечная точка /calendarView предназначена для предоставления вам визуализированного представления календаря для заданного диапазона дат. Без диапазона дат API пришлось бы отображать каждое событие в календаре, возможно, на десятилетия назад. Вычислительные затраты на это могут быть чрезмерно высокими, не говоря уже о негативном влиянии на производительность в масштабе.

Если вам нужны только необработанные базовые объекты event, вы можете использовать конечную точку /events. Это даст вам постраничные результаты, содержащие каждое событие в этом календаре. Вам нужно будет выполнить некоторую постобработку, чтобы отобразить отдельные экземпляры для повторяющихся событий на основе главного события (т. е. событий с "eventType": "seriesMaster").

В общем, я бы рекомендовал использовать /calendarView, так как он обрабатывает для вас экземпляры серии. Вы можете эффективно имитировать получение «всего», передав ему достаточно большое окно, хотя и с ударом по производительности.

Чтобы проиллюстрировать это, вызов следующего URI в Обозреватель графов возвращает полное десятилетие (2009-2019) событий:

https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2009-01-01&enddatetime=2019-12-31

Стоит отметить, что для возврата результата потребовалось 6 436 миллисекунд, а данные содержат лишь небольшое количество событий. Когда я выполнил этот же запрос для календаря мой, это заняло 13 883 миллисекунды. Так что чисто с точки зрения производительности я бы не рекомендовал регулярно выполнять запросы более 12 месяцев за раз (т.е. startdatetime=2018-01-01&enddatetime=2018-12-31 заняло 2795 мс).

Спасибо за подробную информацию. Дело в том, что это просто для синхронизации, так что пара секунд не проблема. Но почти 14 секунд действительно слишком много. Я пойду с календарем с более низким диапазоном.

Sinan Samet 09.04.2019 09:28

Если вы синхронизируете, вы должны использовать дельты вместо того, чтобы каждый раз извлекать все целиком. Первый проход дает вам все, но последующие вызовы вернут только изменения в календарь. Это сэкономит вам много обработки.

Marc LaFleur 09.04.2019 16:16

Да, это то, что я имел в виду, поэтому меня не очень заботило время первой синхронизации. Однако если я использую дельты, будут ли даты начала и окончания по-прежнему применяться к дельтам? Даже если я не передаю ему параметры?

Sinan Samet 09.04.2019 16:35

Это будет поддерживать окно даты, да. Вот почему я предложил использовать полный год. Когда я делал это в прошлом, я поддерживал два токена. Один на текущий год, другой на последующий год. 31 декабря я делаю «последующий» токен «текущим» токеном и получаю новую дельту на следующий год.

Marc LaFleur 09.04.2019 16:42

Другие вопросы по теме