我正在尝试从Microsoft Graph API中收到由收件人过滤的邮件列表。我正在使用的url请求是:
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]" } } ],} ] }
如果我删除过滤器,则该请求有效,并且我可以使用更简单的过滤器执行请求。
我的网址有问题,还是有其他方式提出请求?
根据这个
OData Basic Tutorial,你的过滤器看起来是正确的
它们具有以下过滤器示例,它也会查询复杂数据类型,因此您似乎有正确的方式。
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')
不是答案,但可能只是确认你的经历。