Microsoft Graph API: SharePoint: получить список элементов в «Диске по умолчанию» из «root Site» - PullRequest
0 голосов
/ 07 февраля 2020

Обзор

Я знаком с использованием Microsoft Graph API с возможностью определения файла для обработки элементов в каталоге root if (элементы, в частности папки и файлы ) в Microsoft OneDrive ; создать / удалить / метаданные для Папки и загрузить / удалить / метаданные для Файлы .

Использование Microsoft Graph API снова, я sh, чтобы выполнить те же действия при обработке папок и файлов, создать / удалить / метаданные для папок и загрузить / удалить / метаданные для файлов , в Microsoft SharePoint на диске по умолчанию из root Site как упоминалось ранее для OneDrive .

Проблема

У меня возникли следующие проблемы с Microsoft Graph API при использовании для обработки элементов на диске по умолчанию или root Site:

  1. Использование идентификатора диска по умолчанию при обработке элементов на диске сайта.
  2. Создание / удаление / получение метаданных элемента папки на диске сайта по умолчанию.
  3. Загрузка / Удалить / получить метаданные элемента файла в родительской папке.

Следующий вызов Microsoft Graph API возвращает * 11 12 * диск по умолчанию для сайта * метаданные **:

curl "https://graph.microsoft.com/v1.0/sites/root/drive" \
--request GET \
--verbose \
--write-out 'HTTPSTATUS:%{http_code}' \
--silent \
--header "authorization: Bearer [** ACCESS_TOKEN **]" \
--header "Content-Type: application/json"

JSON Пример ответа:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity",
  "createdDateTime": "2012-06-12T17:27:56Z",
  "description": "Share a document with the team by adding it to this document library.",
  "id": "b!mWxqgLJ9mESqZI4PrP0Gs-F4hgLaCRlCkVuON4nbwzhkKbcyWdM1Tb5WEzNJ0C60",
  "lastModifiedDateTime": "2015-03-03T02:39:56Z",
  "name": "Shared Documents",
  "webUrl": "https://docusign2com.sharepoint.com/Shared%20Documents",
  "driveType": "documentLibrary",
  "createdBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "lastModifiedBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "quota": {
    "deleted": 0,
    "remaining": 0,
    "total": 0,
    "used": 0
  }
}

Проблема с получением метаданных диска

Принимая незашифрованный идентификатор_диска для текущего диска по умолчанию в root Сайт, [** DRIVE_ID **]:

"id": "b!mWxqgLJ9mESqZI4PrP0Gs-F4hgLaCRlCkVuON4nbwzhkKbcyWdM1Tb5WEzNJ0C60"

Кодирование идентификатор_драйва , [** URL-Encoded DRIVE_ID **]:

"id": "b%21mWxqgLJ9mESqZI4PrP0Gs-F4hgLaCRlCkVuON4nbwzhkKbcyWdM1Tb5WEzNJ0C60"

Используя кодированный идентификатор диска , мы можем получить метаданные для этого диска другим способом:

curl "https://graph.microsoft.com/v1.0/sites/root/drives/[** URL-Encoded DRIVE_ID **]" \
--request GET \
--verbose \
--header "authorization: Bearer [** ACCESS_TOKEN **]" \
--header "Content-Type: application/json"

Ответ:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity",
  "createdDateTime": "2012-06-12T17:27:56Z",
  "description": "Share a document with the team by adding it to this document library.",
  "id": "[** DRIVE_ID **]",
  "lastModifiedDateTime": "2015-03-03T02:39:56Z",
  "name": "Shared Documents",
  "webUrl": "https://docusign2com.sharepoint.com/Shared%20Documents",
  "driveType": "documentLibrary",
  "createdBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "lastModifiedBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "quota": {
    "deleted": 0,
    "remaining": 0,
    "total": 0,
    "used": 0
  }
}

Затем я попытался перечислить элементы на Диске root сайта по умолчанию, добавив / items :

curl "https://graph.microsoft.com/v1.0/sites/root/drives/[** URL-Encoded DRIVE_ID **]/items" \
--request GET \
--verbose \
--header "authorization: Bearer [** ACCESS_TOKEN **" \
--header "Content-Type: application/json"

И это не удалось:

{
  "error": {
    "code": "invalidRequest",
    "message": "The request is malformed or incorrect.",
    "innerError": {
      "request-id": "0a212014-b386-45d9-9c36-bae2dd6cea8f",
      "date": "2020-02-07T06:51:15"
    }
  }
}

Требуемый путь API

Каков ожидаемый путь для получения списка всех элементов на диске по умолчанию root на root сайте?

Спасибо

1 Ответ

0 голосов
/ 07 февраля 2020

Вместо использования .../v1.0/sites/$site_id/drives/... для работы с дисками, я переключился на использование .../v1.0/drives/$drive_id/..., и это сработало.

Следующий запрос Microsoft Graph API, приведенный выше с использованием /v1.0/sites/root/drives/[** URL-Encoded DRIVE_ID **], возвращает ранее приобретенный диск по умолчанию (определяется [** DRIVE_ID **]) метаданные:

curl "https://graph.microsoft.com/v1.0/drives/[** url-encoded DRIVE_ID **]" \
--request GET \
--verbose \
--silent \
--header "authorization: Bearer [** ACCESS_TOKEN **]" \
--header "Content-Type: application/json"

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity",
  "createdDateTime": "2012-06-12T17:27:56Z",
  "description": "Share a document with the team by adding it to this document library.",
  "id": "[** DRIVE_ID **]",
  "lastModifiedDateTime": "2015-03-03T02:39:56Z",
  "name": "Shared Documents",
  "webUrl": "https://docusign2com.sharepoint.com/Shared%20Documents",
  "driveType": "documentLibrary",
  "createdBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "lastModifiedBy": {
    "user": {
      "displayName": "System Account"
    }
  },
  "quota": {
    "deleted": 0,
    "remaining": 0,
    "total": 0,
    "used": 0
  }
}

Возвращает папку root диска по умолчанию:

curl "https://graph.microsoft.com/v1.0/drives/[** url-encoded DRIVE_ID **]/root" \
--request GET \
--verbose \
--silent \
--header "authorization: Bearer [** ACCESS_TOKEN **]" \
--header "Content-Type: application/json"

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('[** url-encoded DRIVE_ID **]')/root/$entity",
  "createdDateTime": "2012-06-12T17:27:56Z",
  "id": "[** ROOT_FOLDER_ID **]",
  "lastModifiedDateTime": "2020-02-07T16:04:09Z",
  "name": "root",
  "webUrl": "https://docusign2com.sharepoint.com/Shared%20Documents",
  "size": 27781340,
  "parentReference": {
    "driveId": "b!mWxqgLJ9mESqZI4PrP0Gs-F4hgLaCRlCkVuON4nbwzhkKbcyWdM1Tb5WEzNJ0C60",
    "driveType": "documentLibrary"
  },
  "fileSystemInfo": {
    "createdDateTime": "2012-06-12T17:27:56Z",
    "lastModifiedDateTime": "2020-02-07T16:04:09Z"
  },
  "folder": {
    "childCount": 5
  },
  "root": {}
}

Теперь с папкой root диска по умолчанию, список из дочерних папок можно запросить:

curl "https://graph.microsoft.com/v1.0/drives/[** url-encoded DRIVE_ID **]/items/[** ROOT_FOLDER_ID **]/children" \
--request GET \
--verbose \
--silent \
--header "authorization: Bearer [** ACCESS_TOKEN **]" \
--header "Content-Type: application/json"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...