Ответ 1
После нескольких часов поиска решения я нашел в документации office365, что свойство toRecipients не фильтруется:
Я предполагаю, что это то же самое в графике api, поэтому только решение использует поиск
Я пытаюсь получить список сообщений, которые фильтруются получателем из API графиков Microsoft. 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]"
}
}
],
}
]
}
Запрос работает, если я удаляю фильтр, и я могу выполнять запросы с более простыми фильтрами.
Есть ли проблема с моим URL-адресом или есть другой способ сделать запрос?
После нескольких часов поиска решения я нашел в документации office365, что свойство toRecipients не фильтруется:
Я предполагаю, что это то же самое в графике api, поэтому только решение использует поиск
Ваш фильтр кажется правильным в соответствии с этим 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')
Не ответ, но, вероятно, просто подтверждающий, что вы испытали.
Другой способ сделать запрос может состоять в том, чтобы не использовать фильтр и использовать поиск вместо этого, в зависимости от того, что вы хотите (и вы, возможно, уже пробовали это):
https://graph.microsoft.com/beta/me/messages?$search="to:[Email Address]"