Конечная точка дельты CalendarView API CalendarView не отвечает на первоначальный запрос - PullRequest
0 голосов
/ 08 июля 2019

При отправке первого запроса в API CalendarView, запрос не возвращается или время ожидания. Это происходит только с некоторыми запросами и, кажется, происходит только при первом запросе (возможно, потому, что первый запрос имеет больший размер ответа).

Пример запроса:

GET /me/calendarView/delta?startDateTime=2019-06-27T22:00:00.000Z&endDateTime=2019-09-08T13:17:30.659Z

Текущее решение, которое я нашел, заключалось в уменьшении odata.maxpagesize до очень малого числа (в настоящее время 2 - это наибольшее число, которое работает для всех протестированных мной календарей).

Запросы отправляются с использованием клиента nodejs "@ microsoft / microsoft-graph-client": "1.7.0".

// Initialize client with credentials
const client = graph.Client.init({
            authProvider: done => {
                done(null, credentials.access_token);
            }
        });

const url = "/me/calendarView/delta?startDateTime=2019-06-27T22:00:00.000Z&endDateTime=2019-09-08T13:17:30.659Z

console.log("Request start")
const result = await oAuth2Client
                .api(url)
                .header("prefer", "odata.maxpagesize=10")
                .get();
console.log("Got result", result);

Здесь последний файл console.log никогда не вызывается.

Ожидаемый результат - запрос возвращается, по крайней мере, с кодом ошибки. Я также ожидаю, что API сможет обрабатывать гораздо больше элементов, чем 2 на страницу.

Текущее решение с установкой небольшого размера maxpagesize временно работает, однако я ожидаю, что есть еще одна первопричина.

Есть идеи, что не так и как это можно решить?

1 Ответ

0 голосов
/ 08 июля 2019

После долгих отладок я отследил проблему до библиотеки узлов. При запросе необработанного ответа от API я получил результат независимо от размера страницы.

Решение состояло в том, чтобы вручную проанализировать ответ, после запроса необработанного ответа из библиотеки. Это было основано на реализации в библиотеке на https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/GraphResponseHandler.ts#L98

Я не смог найти причину проблемы в библиотеке, и в результате просто проанализировал ее на своем конце. Я также проанализировал необработанный ответ от API, но заголовок типа контента был правильно application / json, а статус ответа был 200 OK.

const rawResponse = client.api(url).response(ResponseType.RAW).get()

const parsedResponse = await rawResponse.json()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...