我正在尝试获取Microsoft Graph API中收件人筛选的邮件列表。我用于请求的网址是:
https://graph.microsoft.com/beta/me/messages?$filter=toRecipients/any(r: r/emailAddress/address eq '[Email Address]')
但我得到的是回复:
{
"error": {
"code": "ErrorInvalidUrlQueryFilter",
"message": "The query filter contains one or more invalid nodes.",
"innerError": {
"request-id": "7db712c3-e337-49d9-aa8d-4a5d350d8480",
"date": "2016-09-28T16:58:34"
}
}
}
成功的请求应该如下所示(我省略了更多的数据)。
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('99999999-9999-9999-9999-999999999999')/messages",
"@odata.nextLink": "https://graph.microsoft.com/beta/me/messages?$skip=10",
"value": [
{
"toRecipients": [
{
"emailAddress": {
"name": "[Name]",
"address": "[Email Address]"
}
}
],
}
]
}
如果删除过滤器,请求会起作用,我可以使用更简单的过滤器执行请求。
我的网址是否有问题,还是有其他方式提出请求?
答案 0 :(得分:4)
提出请求的另一种方法可能是不使用过滤器而是使用搜索,具体取决于您想要的内容(并且您可能已尝试过此操作):
https://graph.microsoft.com/beta/me/messages?$search="to:[Email Address]"
答案 1 :(得分:4)
在寻找解决方案几个小时后,我在office365文档中发现属性toRecipients不可过滤:
我猜它在图api中是一样的,所以只有解决方案是使用搜索
答案 2 :(得分:3)
他们有下面的过滤器示例,它也查询复杂的数据类型,所以你似乎有正确的方法。
serviceRoot/Me/Friends?$filter=Friends/any(f:f/FirstName eq 'Scott')
回到Microsoft Graph,下面的查询确实有效,所以我只能假设查询复杂的数据类型已经破了。
https://graph.microsoft.com/v1.0/me/messages?$filter=categories/any(c: c eq 'test')
不是答案,但可能只是确认了您的经历。