Microsoft Graph API calendarView增量终结点未响应初始请求

时间:2019-07-08 14:04:32

标签: node.js microsoft-graph microsoft-graph-calendar

将第一个请求发送到calendarView API时,该请求不会返回或超时。这仅发生在某些请求上,似乎只发生在第一个请求上(可能是因为第一个请求具有较大的响应大小)。

一个示例请求:

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 :(得分:0)

经过大量调试,我将问题追溯到节点库。当从API请求原始响应时,无论页面大小如何,我都会获取结果。

解决方案是在要求库提供原始响应后,自己亲自解析响应。这基于https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/GraphResponseHandler.ts#L98

库中的实现

我在库中找不到根本原因,最终只对它进行了解析。我还分析了来自API的原始响应,但content-type标头正确为application / json,响应状态为200 OK。

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

const parsedResponse = await rawResponse.json()