调用Rally API v2.0不会返回一致的结果

时间:2014-06-02 14:52:27

标签: json rest rally

我们正在尝试使用Rally REST API v2.0从Rally中提取数据并将其带入本地数据库以进行进一步的内部分析。最初,我进行此调用以获取我想要枚举的所有项目的JSON:

https://rally1.rallydev.com/slm/webservice/v2.0/workspace/17200849689

在JSON中我回来了

...
"Projects":{
         "_rallyAPIMajor":"2",
         "_rallyAPIMinor":"0",
         "_ref":"https://rally1.rallydev.com/slm/webservice/v2.0/Workspace/17200849689/Projects",
         "_type":"Project",
         "Count":36
      },
...

所以我的假设是我应该有36个项目,我可以通过上面的参考来访问。

然而,我随后使用上面的URL进行调用并附加orderby子句,根据内容启动索引和pagesize。实际上...... / 17200849689 / Projects?orderby = CreationDate& start = 1& pagesize = 20

问题是,我没有收到20条记录。我得到16.似乎开始应该是零基础(这似乎解释了为什么我得到16个记录,页面大小为20),但如果我用start = 0调用上面的记录(这是&n& #39;无论如何API参考指示),我仍然只能获得16条记录。

此外,来自调用的结果JSON不同意记录计数。我收回了这个。这显示了56条记录,而不是36条。我已经离开并通过网站手动计算了项目数量,并且也达到了36条。

{
   "QueryResult":{
      "_rallyAPIMajor":"2",
      "_rallyAPIMinor":"0",
      "Errors":[

      ],
      "Warnings":[

      ],
      "TotalResultCount":56,
      "StartIndex":1,
      "PageSize":20,
...

我是否误解了示例调用中启动和页面大小的工作原理?提前感谢任何意见/建议!

1 个答案:

答案 0 :(得分:0)

查询的起始索引从1开始。默认值为1。 示例:start = 1

最大页面大小为200。 默认页面大小为20。 尝试使用pagesize 200的端点而不指示开始,例如

https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12345/projects?pagesize=200

其他潜在因素:

  • 您的权限。该用户具有哪些权限级别,例如管理员,普通用户?
  • WS API不会返回已关闭的项目。如果您没有在UI中过滤掉已关闭的项目,那么在UI中显示的项目将多于WS API返回的项目。

已关闭项目的问题如下: 项目查询(State = Closed)将返回0结果:

https://rally1.rallydev.com/slm/webservice/v2.0/project?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12345&query=(State%20%3D%20Closed)

但是这个终点:

https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12345/projects
如果用户有权访问,

将返回已关闭的项目。这取决于时间:如果用户在打开时被授予对项目的访问权限,并且在关键字后关闭,则workspace/12345/projects端点应返回打开和关闭的项目数据。 如果在设置用户对给定工作空间中的各种项目的访问权限之前关闭了项目,则该项目甚至不会出现在UI中以授予用户对其的访问权限。 但是,workspace/12345/projects端点将显示与您注意到的差异类似的差异。 totalresultcount将显示工作空间中的项目总数,但数据(返回的项目json对象的数量)将取决于用户有权访问的项目的实际数量。