2017-03-16 97 views
0

我正在使用Sharepoint 2013 REST API来查找发生在根站点中的增量更改。我的要求如下:getChanges Sharepoint rest API

headers = {"Authorization": 'Bearer ' + access_token, "accept": "application/json", "odata": "verbose"} 

    headers["content-type"] = "application/json;odata=verbose" 
    body = { 'query': { '__metadata': { 'type': 'SP.ChangeQuery' },'Web': True, 'Update': True, 'Add': True, 
      'ChangeTokenStart':{'__metadata':{'type':'SP.ChangeToken'}, 
           'StringValue': '1;1;5b9752ee-f410-4cc6-9ab6-eb18c2ad802f;636252579049500000;89866182'} 
           } 
      } 

In response I am getting lot of changerequest objects. One of them is as below: 

{ 
      u 'odata.type': u 'SP.ChangeWeb', 
      u 'ChangeToken': { 
       u 'StringValue': u '1;1;5b9752ee-f410-4cc6-9ab6-eb18c2ad802f;636252779425600000;89976872' 
      }, 
      u 'WebId': u '6e21eadd-4155-494d-9a8e-1046865bdd4b', 
      u 'ChangeType': 2, 
      u 'odata.id': u 'https://<site url>/_api/SP.ChangeWeb87f1a9c6-937b-4507-973d-fc2d1b949aed', 
      u 'SiteId': u '5b9752ee-f410-4cc6-9ab6-eb18c2ad802f', 
      u 'odata.editLink': u 'SP.ChangeWeb87f1a9c6-937b-4507-973d-fc2d1b949aed', 
      u 'Time': u '2017-03-16T16:19:02.56Z' 

有人能帮我理解回应吗?我很难找出发生变化的途径。此外,这会改变发生在网站子网站中的API捕获更改吗?

在此先感谢

回答

1

是的列表和库在一天结束时是一回事。您可以通过剥离上述案例中的最后一个片段(Items(1))来从odata.editLink获取列表标题。如果您调用该路径,它会为您提供列表与已修改的项目/文件的详细信息。如果您想要用户的详细信息,请调用/ _api/Web/lists/getbytitle('用户信息列表')/ Items(EditorId)。如果您想要项目/文件调用odata.editlink的路径,并且返回的serverrelativeurl参数将具有指向它的路径,并且标题将具有项目/文件的标题。

+0

谢谢马滕:) –

0

当然,中ChangeType是你需要的是一个枚举信息的主要部分。你可以看一下这里的数字友好名称:ChangeType Enumeration

因此,在这种情况下,看起来像一个更新的SPWeb的设置与“6e21eadd-4155-494d-9a8e-1046865bdd4b”

一个GUID

您可能还想查看在REST查询中使用$ expand操作符以获取更多字段。

+0

谢谢你的答案..但我不明白的是我在哪里可以获得有关发生实际变化的对象名称的信息,即如果变化在列表中,那么我如何检索这是响应的名称和其他细节? –

+1

您的查询只需要更改网页,而不是列表,这就是为什么您没有看到更多信息。更改'网站':真到'列表':真正的获取列表更改:) 然后你会看到的细节,你会看到ChangeType和ObjectsChanged(用Web查询对象更改只能是Web或导航)。它不会给你一个完整的突破,但是完整的改变是什么,它像Field或ContentType那样受到什么影响。但不是什么领域,或什么内容类型,没有比较前后。 – Maarten