Я использую общую точку rest api для получения файлов и папок из библиотеки общих точек. У меня есть две библиотеки (с GUID), и это конечная точка API, которую я использую:

/_api/web/GetFolderById('{$guid}')?\$expand=Folders,Files

api возвращает все папки и файлы, как и ожидалось, для первой библиотеки с guid библиотекой, но проблема для второй - она возвращает эту ошибку, даже если я использую конечную точку папки:

{
    "error": {
        "code": "-2147024894, System.IO.FileNotFoundException",
        "message": {
            "lang": "en-EN",
            "value": "File Not Found."
        }
    }
}

Я также использовал конечную точку getfolderbyserverrelativeurl с относительными путями к папкам. эта конечная точка возвращает ожидаемые результаты для первой папки, но эта ошибка для второй:

{
    "error": {
        "code": "-2147024891, System.UnauthorizedAccessException",
        "message": {
            "lang": "en-EN",
            "value": "Access denied. You do not have permission to perform this action or access this resource."
        }
    }
}

Обратите внимание, что я могу просматривать вторую папку в Интернете с теми же учетными данными (username и password).

Итак, вот мой вопрос: есть ли другой способ получить все файлы и папки, используя точку общего доступа rest api? если нет, то в чем заключается ошибка в моих подходах?

0
MehrdadEP 18 Авг 2019 в 10:41

2 ответа

Лучший ответ

Путь к конечным точкам api для семейств сайтов отличается от основного сайта. например, если вы хотите получить доступ к папке A в семействе сайтов B, вы должны использовать эту конечную точку для получения корневой папки GUID:

http://sitename/sites/collection_name/_api/web/lists(guid'7EA06E82-C7C1-41FE-AF8B-C3341E928D6A')/rootFolder

А затем используйте эту конечную точку с корневой папкой GUID, чтобы получить все файлы и папки:

http://sitename/sites/collection_name/_api/web/GetFolderById('26728694-ee8e-4618-a524-5ea6ba545384')?$expand=Folders/ListItemAllFields,Files/ListItemAllFields
0
MehrdadEP 25 Авг 2019 в 06:51

Вы можете использовать эту конечную точку, чтобы получить все подпапки внутри библиотеки, а затем найти папку Unique Id:

/ _Api / веб / списки / GetByTitle ( ' Документы ') / RootFolder / папки? $ = Расширение ListItemAllFields

enter image description here

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

/ _Api / веб / GetFolderById ( ' 6a7de691-321a - 41e9-8927-5594082d5a94 ')? $ Развернуть = Папки , файлы

0
Jerry_MSFT 19 Авг 2019 в 09:23