Конечная точка /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
Стоит отметить, что для возврата результата потребовалось 6436 миллисекунд, а данные содержат только небольшое количество событий. Когда я выполнил этот же запрос для моего календаря, это заняло 13 883 миллисекунды. Так что чисто с точки зрения производительности я бы не рекомендовал регулярно запрашивать более 12 месяцев за раз (т. Е. startdatetime=2018-01-01&enddatetime=2018-12-31
заняло 2795 мс).