Я пытаюсь получить @microsoft.graph.downloadUrl для элементов в списке SharePoint, используя простой HTTP-вызов API Microsoft Graph. Однако поле downloadUrl всегда возвращается пустым. Вот HTTP-запрос, который я использую:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?expand=driveItem(select=id,contentType,@microsoft.graph.downloadUrl)&$top=900
Когда я пытаюсь выполнить тот же запрос с помощью Microsoft Graph SDK, URL-адрес загрузки заполняется правильно:
var listItemsResponse = await graphServiceClient.Sites[site.Id].Lists[documentList.Id].Items.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Expand = new string[] { "driveItem" };
requestConfiguration.QueryParameters.Select = new string[] { "id", "contentType" };
requestConfiguration.QueryParameters.Top = 900;
});
bool hasDownloadUrl = driveItem.AdditionalData.TryGetValue("@microsoft.graph.downloadUrl", out object? downloadUrl);
🤔 А знаете ли вы, что...
С C# легко создавать библиотеки для работы с RESTful API и обмена данными по сети.
Обратите внимание, что свойство @microsoft.graph.downloadUrl не будет заполняться для папок SharePoint, имеющих тип содержимого «Папка».
У меня есть один сайт SharePoint, имеющий одну папку и несколько файлов разных типов, как показано ниже:
Когда я выполнил HTTP-запрос, свойство @microsoft.graph.downloadUrl не заполняется для тестовой папки, поскольку оно ContentType
является «Папкой», как показано ниже:
GET https://graph.microsoft.com/v1.0/sites/siteId/lists/listId/items?expand=driveItem(select=id,@microsoft.graph.downloadUrl)&$top=500
Ответ:
Для остальных файлов SharePoint, где ContentType
— «Документ», свойство @microsoft.graph.downloadUrl будет заполнено в ответ следующим образом:
GET https://graph.microsoft.com/v1.0/sites/siteId/lists/listId/items?expand=driveItem(select=id,@microsoft.graph.downloadUrl)&$top=500
Ответ:
Судя по вашему снимку экрана, вы не получаете URL-адрес загрузки для элемента диска, имеющего ContentType
в качестве «Папки».