Sharepoint 2013 - 通过REST api仅获取上次批准的版本

时间:2014-09-26 07:28:07

标签: api rest sharepoint sharepoint-2010

在我提出问题之前,我想简要介绍一下这个主题。

我获得了一个启用了内容审批功能的sharepoint列表(SP 2013)。对于此列表,您可以选择应该查看项目草稿版本的人员。这里的大多数逻辑选项是让作者和所有批准者看到草稿。现在想象一个项目已被批准,现在再次编辑。有一个版本是草稿(因为它需要再次批准)和之前已经批准的版本。

这是棘手的部分:-)。我通过REST api获取该列表的项目。我的查询包含“_ModerationStatus eq 0”,这意味着我只获取已批准的项目。不允许查看草稿的用户自动获得该项目的最后批准版本,尽管有一个草稿版本等待批准。允许查看草稿版本的用户看到(我希望这里有不同的东西)没有!因此,对于能够查看草稿的用户而言,查询不会获取最后批准的项目。现在如果我执行没有“_ModerationStatus eq 0”的查询,这些用户会看到草稿版本,而其他人(不允许看草稿)仍然会看到最后批准的版本。

所以最后我的问题是:有没有机会改变这个beaviour?我希望SP通过REST api为所有用户返回最后批准的版本。如果这些用户打开SP列表本身,他们肯定会看到草稿。所以它只是关于其余的api。

我不认为这是可能的(没有找到任何改变它的东西)而且我认为REST api只是反映了SP列表视图本身的本机视图行为的行为。

提前谢谢! 问候 本

2 个答案:

答案 0 :(得分:0)

以下是此问题的两种可能解决方案:

  1. 创建第二个列表,只要主列表上的新项目或更新项目获得批准,就让工作流程在此列表中创建或更新项目。
  2. 答:工作清单 - >新的或更改的项目 - >工作流程 - >创建或更新列表B:生产列表

    上的项目

    使用项目的唯一ID来检查列表B中是否已存在项目。

    1. 您可以在此处阅读第二种可能的解决方案:https://sharepoint.stackexchange.com/questions/116921/distinguish-between-approved-and-not-approved-items-rest-api
    2. 使用OData__ModerationStatus,可以获取您的请求通过REST获取的每个项目的批准状态。因此,您可以将标记DRAFT放置到任何未批准的草稿版本,以便让作者和所有批准者知道这不是批准的版本。

      当然可以获得每个项目的最后批准版本,但这将导致需要额外的请求和验证等。

      希望这会有所帮助:)

答案 1 :(得分:-1)

只需使用以下内容,

http://WebAppUrl/_api/web/getfilebyserverrelativeurl('/RelativePathToFile')/MajorVersion

示例:

http://contoso.com/_api/web/getfilebyserverrelativeurl('/_catalogs/masterpage/css/main.css')/MajorVersion

返回最近发布的主要版本