目前,据我所知,Microsoft图表根据https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/message为Outlook邮件文件夹提供了两个主要端点
List mail folders
和List child folders
- 意思是在我的仪表板应用程序中构建文件夹层次结构,我需要进行递归REST API调用 - 这非常慢且非常糟糕。
有没有办法让微软一次只返回所有文件夹?
答案 0 :(得分:3)
是的,可以。只需使用增量查询即可获取所有文件夹。
请求示例: https://graph.microsoft.com/v1.0/users/[user_id]/mailfolders/delta?$select=displayname 您将获得所有文件夹的数组,并在响应中父文件夹项之后加上子文件夹。
测试:
转到:https://developer.microsoft.com/en-us/graph/graph-explorer
GET版本:v1.0 URL:https://graph.microsoft.com/v1.0/me/Mailfolders/delta
运行查询
注意,响应中还包括其parentFolderId为“收件箱” ID的“内部屏幕”和“ Project Falcon”文件夹。
答案 1 :(得分:1)
不,没有。您应该检查每个文件夹上的childFolderCount
属性,并仅查询是否为非零。
答案 2 :(得分:0)
通过扩展childFolders容器,您可以为每个呼叫获得两个级别。
https://graph.microsoft.com/v1.0/me/mailFolders?$top=250&$expand=childFolders
每个请求最多可以获取250个文件夹,您将获得一个扁平的层次结构,其中包括无限的子级别。自2015年以来,该Beta版本一直处于beta版本(我可以说是最好的),我无法确定何时/是否将其投入生产。就我而言,我使用Beta来获取文件夹,回退到v1.0和递归循环。
只需稍微更改GET请求即可。 v1.0 至 测试版。对我来说,现有的Auth令牌和凭据都可以正常运行,而无需进行任何更改。另外请注意,无需使用Beta端点来扩展childFolders。
https://graph.microsoft.com/beta/me/mailFolders?$top=250
示例响应...
[{
"id": "xx-1",
"displayName": "Inbox",
"parentFolderId": "xx-0",
"childFolderCount": 1,
"unreadItemCount": 8,
"totalItemCount": 22,
"wellKnownName": "inbox"
},
{
"id": "xx-2",
"displayName": "Level 2",
"parentFolderId": "xx-1",
"childFolderCount": 1,
"unreadItemCount": 2,
"totalItemCount": 4,
"wellKnownName": null
},
{
"id": "xx-3",
"displayName": "level 3",
"parentFolderId": "xx-2",
"childFolderCount": 1,
"unreadItemCount": 0,
"totalItemCount": 0,
"wellKnownName": null
},
{
"id": "xx-4",
"displayName": "level 4",
"parentFolderId": "xx-3",
"childFolderCount": 0,
"unreadItemCount": 0,
"totalItemCount": 0,
"wellKnownName": null
}
]