我正在制作一个 wpf 应用程序,使用 Redmine.Net.Api 显示来自 redmine 的一些数据。 我只想显示属于 redmine 组的用户。 我可以得到所有组
Redminemanager manager = new RedmineManager(Config.host, Config.apiKey);
var groups = manager.GetObjects<Group>();
我的组名称是正确的,但用户始终为空。
我也尝试了用户类别下的组:
Redminemanager manager = new RedmineManager(Config.host, Config.apiKey);
var redmineUsers = manager.GetObjects<User>()
那里的组也总是为空。
我不太明白,希望有人能帮忙。 提前致谢。
这是关于 Redmine REST API 的工作原理:默认情况下,列出一个组不会检索用户。
Redmine REST API 文档,GET Groups 部分,说道:
获取
返回群组的详细信息。
此端点需要管理员权限。
参数:
- include(可选):要包含在响应中的逗号分隔的关联列表:
- 用户
- 会员资格
我在本地Redmine安装上尝试了
GET /groups/1.json
,但没有使用include=users
,实际上并没有检索到用户。当我添加?include=users
时,它就像一个魅力
在 Github 上的官方 Redmine.Net.API Wiki 上有一个使用这些包含参数的示例。
是这样的:
var group = manager.GetObject<Group>(groupId,
new NameValueCollection() { { RedmineKeys.INCLUDE, RedmineKeys.USERS } });
祝你好运。
public static async Task<IEnumerable<Group>> GetAllGroupsAsync(this RedmineManager _rmm)
{
var groups = await _rmm.GetObjectsAsync<Group>(new NameValueCollection()
{
{
"include", "users"
}
});
if (groups == null || groups.Any() == false)
{
return new List<Group>();
}
foreach (var group in groups)
{
var groupWithUsers = await _rmm.GetObjectAsync<Group>(group.Id.ToString(), new NameValueCollection()
{
{
"include", "users"
}
});
group.Users = groupWithUsers.Users;
}
return groups.ToList();
}