Microsoft Graph список детей, включая внуков - PullRequest
0 голосов
/ 27 февраля 2020

Можно ли рекурсивно включить содержимое дочерних элементов (внуков) в один запрос в Microsoft Graph API ?

Я хочу запросить папку /foo/, а также получить содержание /foo/baar/ например /foo/baar/baz.txt.

IGraphServiceClient graphClient = GraphServiceClient
   .builder()
   .authenticationProvider(authProvider)
   .buildClient();

IDriveItemCollectionPage children = graphClient
   .drives("{drive-id}")
   .items("{item-id}")
   .children()
   .buildRequest()
   .expand("children")
   .get();

Расширение запроса с помощью children возвращает com.microsoft.graph.http.GraphFatalServiceException: Unexpected exception returned from the service.Error code: notSupported

Это значительно повысит производительность моих запросов.

Редактировать: только что создан запрос функции : Список детей, включая внуков

1 Ответ

1 голос
/ 01 марта 2020

Невозможно с expand получить файлы более 1 уровня. Он упоминается в разделе Известные проблемы документации Microsoft Graph Api.

Но мы можем рекурсивно получить все файлы и папки, используя search .

Поиск с q = '' (поиск пустого запроса), это вернет все файлы и папки в области поиска. Для поиска области действия c, обратитесь к этому answer . Вы можете использовать ключ parentReference, чтобы определить, какой файл принадлежит какой папке.

Пример 1: Следующий запрос извлекает все файлы и папки в root scope

https://graph.microsoft.com/v1.0/me/drive/root/search(q='')?$select=name,id,parentReference

Пример 2: Для поиска в папке с именем 'temp', расположенной в папке root

https://graph.microsoft.com/v1.0/me/drive/root:/temp:/search(q='doc')?$select=name,id,parentReference

Ограничения при поиске (на данный момент)

  • Файлы и папки созданные недавно, требуют времени для отражения в результатах поиска, так как они должны быть проиндексированы. Они видны при запросе детей, но не отображаются в результатах поиска.
  • Уловка пустого запроса работает только с учетными записями OneDrive Business, но не с личными учетными записями OneDrive. Для личных учетных записей OneDrive при поиске с пустым запросом возвращается сообщение об ошибке «Запрос на поиск не может быть пустым» *
  • Область поиска, определяющая c поиск (например: поиск в указанной папке c), работает с OneDrive Personal, но не с учетными записями OneDrive.
...