2015-12-14 17 views
1

我正试图获得拉力赛API中每个项目的用户列表。看起来在请求中放置一个项目ID并没有做任何事情来限制结果。我似乎让每个人都在订阅。 'WorkSpace'和'Project'都不起作用。 (我真的很想得到每个项目的每个用户,我知道怎么回事项目列表,但用户是个问题。)RallyAPI:如何获取使用.NET api的项目的用户列表?

这是我到目前为止有:

 Rally.RestApi.Request userRequest = new Request("user"); 
     userRequest.Workspace = WebConfigurationManager.AppSettings["RallyAPIWorkspaceID"]; 
     userRequest.Project = "https://rally1.rallydev.com/slm/webservice/v2.0/project/XXXXXXXXX"; 
     userRequest.Query = new Query(""); 
     QueryResult queryUserResults = restApi.Query(userRequest); 

     List<SelectListItem> AvailableUsers = new List<SelectListItem>(); 

     foreach (var result in queryUserResults.Results) 
     { 
      SelectListItem selectListItem = new SelectListItem(); 
      selectListItem.Text = result["DisplayName"]; // userName 
      selectListItem.Value = result["_ref"]; // Reference 
      AvailableUsers.Add(selectListItem); 
     } 

回答

1

用户对象WS API中没有Project或Workspace属性,并且userRequest.Query = new Query("Project", Query.Operator.Equals, someProjectRef)userRequest.Project不会帮助您限制请求。 也许你想查询ProjectPermission对象。 ProjectPermission从抽象UserPermission对象继承用户属性(对用户的引用)。这不是特定于Rally .NET或任何其他语言工具包。

由于ProjectPermission查询无法通过项目的约束,并且将返回所有ProjectPermission对象,你将不得不遍历结果,让只有那些你感兴趣的内容。 不像大多数端点WSAPI,ProjectPermissions端点不接受任何查询过滤。因为这个原因,运行这个操作可能是一个危险的查询。对于包含数千个用户和数百个项目的工作空间,点击此端点最终可能会创建一个访问数十万行的数据库查询。

+0

非常感谢。哇,这对他们来说是荒谬的......我可以想到一些想要获得项目所有用户的例子。 RallyAPI是相当sl and,一般难以工作,现在这添加到不幸的名单...再次感谢。 –

+0

在请求对象的.Query中,我可以这样做:userRequest.Query = new Query(“Project”,Query.Operator.Equals,“https://rally1.rallydev.com/slm/webservice /v2.0/project/1234567890“) –

+0

不,我不能......只是想通了.. –

相关问题