如何从sharepoint指向/获取文件内容或文件更改api调用

时间:2016-07-12 04:39:00

标签: sharepoint sharepoint-2013 sharepoint-api

我正在使用sharepoint rest api /getchanges来更改sharepoint网站并获得结果: -

{
    "d": {
        "results": [{
            "__metadata": {
                "id": "https://mysite.sharepoint.com/test/_api/SP.ChangeItem38931e4b-01fa-4744-b478-e4f2b7cd7d8c",
                "uri": "https://mysite.sharepoint.com/test/_api/SP.ChangeItem38931e4b-01fa-4744-b478-e4f2b7cd7d8c",
                "type": "SP.ChangeItem"
            },
            "ChangeToken": {
                "__metadata": {
                    "type": "SP.ChangeToken"
                },
                "StringValue": "1;1;16393f71-acfe-4ff4-a8e2-5668f572d3c6;636035775676900000;17124328"
            },
            "ChangeType": 1,
            "SiteId": "16393f71-acfe-4ff4-a8e2-5668f572d3c6",
            "Time": "2016-07-08T12:26:07Z",
            "Editor": "",
            "EditorEmailHint": null,
            "ItemId": 21,
            "ListId": "244dcdb3-d056-4184-aa21-1dc7f507f199",
            "ServerRelativeUrl": "",
            "SharedByUser": null,
            "SharedWithUsers": null,
            "WebId": "9eb4d645-db81-4e3b-b2c1-cecc0b4efe5f"
        }]
    }
}

我使用的请求是: -

POST http://mysite.sharepoint.com/test/_api/site/getchanges     用json body作为更改查询: -

  {
  'query': {
    '__metadata': {
      'type': 'SP.ChangeQuery'
    }, 
    'Update': true, 'Add': true,'Item':true,'DeleteObject':true
  }
}

现在我想从这些更改中获取内容,如果它是文件更改。但我无法将结果WebId或ItemId中获得的Id与可以使用sharepoint的文件和文件夹api获取的文件ID相关联。那么如何将此结果与实际文件ID或文件相关联以获取已更改文件的内容?

1 个答案:

答案 0 :(得分:3)

通过进一步研究,我发现我们可以通过调用以下方式获取文件内容: -

GET https://mysite.sharepoint.com/<site_name>/_api/web/lists(guid'<list-id>')/items(<item-id>)/File 

使用从/getchanges api获取的列表ID和项目ID的sharepoint api。然后使用响应的 ServerRelativeUrl 字段通过调用获取文件内容: -

GET http://mysite.sharepoint.com/<site_name>/_api/web/getfilebyserverrelativeurl('<url>)/$value?binaryStringResponseBody=true

干杯:)