Microsoft Graph API @odata.count не возвращается при использовании параметра поиска $ в конечной точке сообщений

#azure-web-app-service #microsoft-graph-api

#azure-web-app-service #microsoft-graph-api

Вопрос:

Я вызываю эту конечную точку: /users/{email-address}/mailFolders/Inbox/messages?$select=isRead,hasAttachments,subject,from,bodyPreview,receivedDateTimeamp;$top=25amp;search="{search-term}"amp;$count=true

в ответ возвращаются только @odata.context , @odata.nextLink , и value .

При удалении $search параметра из запроса @odata.count также возвращается ответ.

Я использую @odata.count для вычисления количества страниц результатов. Я бы предпочел не использовать skipToken , а использовать только $top и $skip для разбивки результатов на страницы.

Кто-нибудь еще сталкивался с этим раньше / есть обходной путь?

Ответ №1:

Переместите комментарий в ответ на ссылку других пользователей.

Использование $search и $count вместе в настоящее время не возвращает значение @odata.count.

Поскольку $search количество запросов ограничено 250 результатами, в ответе можно получить не более 250 элементов.

Поэтому в этом случае я предполагаю, что ваши данные меньше 250. Обходной путь заключается в том, чтобы использовать $top=250amp;$search="{search-term}" в запросе все результаты, а затем получить количество результатов с помощью метода, предоставляемого пакетом (отличным от Microsoft SDK) в вашем коде.

Комментарии:

1. На данный момент этого достаточно… Чтобы избежать захвата всех данных для всех 250 сообщений, я использую пакетную обработку и отправку 25 запросов (используя 2 отдельных пакетных запроса), чтобы получать сообщения по отдельности по идентификатору, а затем собирать их вместе из ответа.