2

我正在尝试使用 Microsoft Graph API 从 SharePoint 文档库中获取文件夹和文档。

如果我GET请求https://graph.microsoft.com/v1.0/sites/mysite.sharepoint.com:/sites/MyDocumentSite:/drives/,我会得到这个:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives",
    "value":[
        {
            "createdDateTime": "2019-09-05T07:09:49Z",
            "description": "",
            "id": "b!wxh2ZWwoT0KKTdLRYjD5jvzjo8jkat5LgY3VyfgEqkv3YVg_XXXXXXXXXXXXXXXX",
            "lastModifiedDateTime": "2019-09-05T07:09:49Z",
            "name": "Documents",
            "webUrl": "https://mysite.sharepoint.com/sites/MyDocumentSite/Shared%20Documents",
            "driveType": "documentLibrary",
            "createdBy":{"user":{"displayName": "System Account" }},
            "lastModifiedBy":{"user":{"email": "me@myorganization.org", "id": "73f9990c-5c92-4839-8b13-XXXXXXXXXXXX", "displayName": "John Smith"…},
            "quota":{"deleted": 0, "remaining": 0, "total": 0, "used": 0}
        }
    ]
}

但是,如果我尝试通过GET对该 id: 发出请求来访问该驱动器,则会https://graph.microsoft.com/v1.0/sites/mysite.sharepoint.com:/sites/MyDocumentSite:/drives/b!wxh2ZWwoT0KKTdLRYjD5jvzjo8jkat5LgY3VyfgEqkv3YVg_XXXXXXXXXXXXXXXX收到 BadRequest 错误:

{
    "error":{
        "code": "BadRequest",
        "message": "Url specified is invalid.",
        "innerError":{
            "request-id": "7c9eaf61-764f-4d72-abdb-ffa2fe868e90",
            "date": "2019-09-16T19:09:41"
        }
    }
}

最终,我想要一种方法来显示文档库中的所有文件夹和文档,但我似乎无法通过这个初始步骤。

4

3 回答 3

3

实际上,当 site 由site path寻址时,以下查询会失败,但有以下异常:

GET `https://graph.microsoft.com/v1.0/sites/{hostname}:/{server-relative-path}/drive/root/children` 

这似乎是一个错误,因为类似的查询但是当站点由 id 寻址时,按预期工作:

GET https://graph.microsoft.com/v1.0/sites/{site-id}/drive/root/children

要考虑的另一个选项,通过其标识符(不指定站点路径或标识符)获取Drive资源,例如:

GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children

当轮到获取库中的所有文档和文件夹时,List children of a driveItemendpoint仅返回当前文件夹下的 1 级。

要退回所有驱动器项目,您至少可以考虑:

于 2019-09-18T13:41:53.830 回答
0

使用“增量”API: https ://docs.microsoft.com/en-us/graph/api/driveitem-delta?view=graph-rest-1.0&tabs=http

第一次调用将返回所有项目。(如果有分页,你需要调用 nextLink,直到你收到一个 deltaLink)。

您可能希望使用 GET /sites/{siteId}/drive/root/delta 或 GET /drives/{drive-id}/root/delta

于 2019-09-16T20:53:20.660 回答
0

获得要查询的驱动器 ID 后,在根目录下使用 /drives 发出请求:

https://graph.microsoft.com/v1.0/drives/<driveId>
于 2019-10-04T19:33:43.577 回答