Я могу создавать папки в папках ниже корня библиотеки документов и загружать файлы повсюду, но я не могу понять путь POST для создания новой папки в корне диска (библиотеки документов). Все, что я нахожу, уже предполагает какую-то папку по умолчанию. Для примеров POST, представленных в документации MS, требуется идентификатор родительского элемента. Я пробовал много перестановок синтаксиса POST.
Ни один из них не работает:
Это то, что я использую для создания папок ниже корня библиотеки документов:
folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}/items/{parent_item_id}/children'
folder_path_values = folder_path.format(drive_id=driveid, parent_item_id=parentid)
Вот код, который я использую для отправки запроса, который не работает:
# Some code to get the access_token and the API permissions we have are Files.ReadWrite.All and Sites.ReadWrite.All
driveid = 'b!qyL8-Uu96Uud....JR4eRG9FpH-Z5'
name = 'Drafts'
headers = {'Authorization': 'Bearer ' + access_token}
folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}'
folder_path_values = folder_path.format(drive_id=driveid)
new_folder = {
"name": name,
"folder": {},
"@microsoft.graph.conflictBehavior": "replace"
}
res = requests.post(folder_path_values, json=new_folder, headers=headers)
Это дает мне ошибку 400 - я не могу понять правильный синтаксис для создания новой папки (диска) в корне библиотеки документов.
Если вы хотите создать папку под корнем, то вы можете использовать PATCH
PATCH /drives/id/root:/drafts
{
"folder": {},
"@microsoft.graph.conflictBehavior": "fail"
}
Код
driveid = 'b!qyL8-Uu96Uud....JR4eRG9FpH-Z5'
name = 'Drafts'
headers = {'Authorization': 'Bearer ' + access_token}
folder_path = 'https://graph.microsoft.com/v1.0/drives/{drive_id}/root:/'+name
folder_path_values = folder_path.format(drive_id=driveid)
new_folder = {
"folder": {},
"@microsoft.graph.conflictBehavior": "replace"
}
res = requests.patch(folder_path_values, json=new_folder, headers=headers)
Если вы хотите иметь другую папку на том же уровне, что и root, то это невозможно, потому что на диске может быть только одна самая верхняя папка.
Это сделало трюк! Спасибо. Я часами искал это решение. Я закончил с folder_path = 'graph.microsoft.com/v1.0/drives{drive_id}/root:/{folder_namee}', но в остальном закодировал точно так, как вы предложили, и это сработало.