Microsoft Graph API calendarView delta 终结点未响应初始请求
Microsoft Graph API calendarView delta endpoint does not respond on initial request
向日历视图发送第一个请求时API,请求没有return或超时。这只发生在一些请求上,而且似乎只发生在第一个请求上(可能是因为第一个请求有更大的响应大小)。
请求示例:
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 永远不会被调用。
预期的结果是请求 returns,至少有一个错误代码。我还希望 API 能够处理比每页 2 个更多的项目。
设置较小的 maxpagesize 的当前解决方案暂时有效,但是,我预计还有另一个根本原因问题。
知道哪里出了问题,如何解决?
经过大量调试后,我将问题追溯到节点库。当要求 API 的原始响应时,无论页面大小如何,我都得到了结果。
解决方案是在从图书馆请求原始响应后,自己手动解析响应。这是基于 https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/GraphResponseHandler.ts#L98
库中的实现
我在库中找不到根本原因问题,最后只是在我这边解析它。我还分析了来自 API 的原始响应,但是 content-type header 是正确的 application/json,并且响应状态为 200 OK。
const rawResponse = client.api(url).response(ResponseType.RAW).get()
const parsedResponse = await rawResponse.json()
向日历视图发送第一个请求时API,请求没有return或超时。这只发生在一些请求上,而且似乎只发生在第一个请求上(可能是因为第一个请求有更大的响应大小)。
请求示例:
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 永远不会被调用。
预期的结果是请求 returns,至少有一个错误代码。我还希望 API 能够处理比每页 2 个更多的项目。
设置较小的 maxpagesize 的当前解决方案暂时有效,但是,我预计还有另一个根本原因问题。
知道哪里出了问题,如何解决?
经过大量调试后,我将问题追溯到节点库。当要求 API 的原始响应时,无论页面大小如何,我都得到了结果。
解决方案是在从图书馆请求原始响应后,自己手动解析响应。这是基于 https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/GraphResponseHandler.ts#L98
库中的实现我在库中找不到根本原因问题,最后只是在我这边解析它。我还分析了来自 API 的原始响应,但是 content-type header 是正确的 application/json,并且响应状态为 200 OK。
const rawResponse = client.api(url).response(ResponseType.RAW).get()
const parsedResponse = await rawResponse.json()