Microsoft Graph API:是否可以遍历文件夹的递归

时间:2018-02-14 14:58:12

标签: microsoft-graph office365api outlook-restapi

我们正在从邮件EWS转换为Microsoft Office 365 Graph API,

我想将所有文件夹树平放到平面文件夹列表中,因此列表中的每个条目都应包含:

Folder:{parentId, myId} , ...

我在测试版中看到有一个选项可以遍历:

https://graph.microsoft.com/beta/me/mailFolders/inbox?$top=50&$expand=childFolders($levels=5)

但不幸的是我只获得了第一级......

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('4ed9f9bf-cfea-47de-ba2c-e4323d2dd600')/mailFolders/$entity",
    "id": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA==",
    "displayName": "Inbox",
    "parentFolderId": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBCQAAAA==",
    "childFolderCount": 1,
    "unreadItemCount": 307,
    "totalItemCount": 320,
    "wellKnownName": "inbox",
    "childFolders@odata.context": "https://graph.microsoft.com/beta/$metadata#users('4ed9f9bf-cfea-47de-ba2c-e4323d2dd600')/mailFolders('AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA%3D%3D')/childFolders",
    "childFolders": [
        {
            "id": "AAMkAGM5MDIzODk0LTg2NmMtNDE3YS05M2YwLTBhZjgzZWQxODUxYQAuAAAAAAAX07OCLT-gQbX2qJJIVqojAQCdUXzQSXe1Tqh1KvhfGj3SAAOojCnvAAA=",
            "displayName": "LEVEL_1",
            "parentFolderId": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA==",
            "childFolderCount": 1,
            "unreadItemCount": 0,
            "totalItemCount": 0,
            "wellKnownName": null
        }
    ]
}

是否有一个好的API使用O-Data或其他遍历算法(如EWS - 深度遍历),所以我可以减少我的其余API调用......

谢谢=]

1 个答案:

答案 0 :(得分:2)

Microsoft Graph API中没有深层文件夹遍历调用。您需要扩展每个级别。您可能需要为此打开feature request

话虽如此,您可以使用batch feature来减少为获取文件夹层次结构而必须进行的调用次数。只要文件夹层次结构不超过任何级别的20个文件夹(参见batch restrictions),您就可以进行单个批处理调用,以跨层次结构获取给定级别的所有文件夹。您想在任何级别上占20个以上的文件夹。

关于执行此操作的算法,我没有看到这种情况,因此您可能是使用批处理算法的Microsoft Graph深层文件夹遍历的创建者。