【问题标题】:MS Graph API response not returning all the data items it supposed toMS Graph API 响应没有返回它应该返回的所有数据项
【发布时间】:2018-08-07 02:14:56
【问题描述】:

我的目的是构建一个机器学习程序,该程序将通过阅读所有以前的电子邮件历史记录来推荐归档电子邮件项目。

为此,我正在尝试从以下位置读取所有电子邮件项目:

https://graph.microsoft.com/beta/me/messages

首先,我使用/messages?$count=true 获取帐户中的电子邮件项目总数,结果返回1881

然后我尝试使用以下方式获取所有 1881 项目:

https://graph.microsoft.com/beta/me/messages?$top=1881

但问题是返回 976 个电子邮件项目。其余的电子邮件项目在哪里?我怎样才能找到它们?

【问题讨论】:

    标签: microsoft-graph-api outlook-restapi


    【解决方案1】:

    您的回复中是否收到了 @odata:nextLink 属性?

    如果是这种情况,您可能需要发送另一个带有skiptoken 参数的请求。它应该包含来自@odata:nextLink 响应属性的值。

    在“分页”文档页面 - https://developer.microsoft.com/en-us/graph/docs/concepts/paging - 指定不同的 API 具有不同的最大页面大小。用于获取电子邮件的端点可能不支持 1881 的页面大小。在这种情况下,您可能需要访问结果的第二页。

    另一个建议是用 V1 API 调用替换 beta 端点,因为那里也可以使用 me/messages - https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_messages

    【讨论】:

    • 它没有任何下一个链接,我尝试使用 V1 API。结果是一样的。
    • 您使用什么样的权限 - Mail.Read 应用程序权限需要管理员同意或委派权限不需要管理员同意?
    • offline_access User.Read Mail.Read Mail.ReadWrite
    • 这对我来说似乎没问题。即使它不应该是一个问题,我会尝试使用较小的 $top 参数来获取消息,例如$top=100 因为如果该参数超过最大页面大小,某些端点会表现得很奇怪。你也能确认邮箱里确实有1881件吗?或者您能否发现响应中是否排除了特定的邮件文件夹?
    • 我可以尝试使用 $top=100。是的,我试过 $count=true 并且响应是 1881。
    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2021-04-30
    相关资源
    最近更新 更多