You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab能否通过单次API调用获取群组及子组、项目的全部成员

GitLab API 递归拉取群组成员相关说明

核心结论

目前GitLab原生不支持单次API调用同时获取指定群组、其所有下属子组、所有下属项目的全部用户列表,但官方提供了参数可以大幅简化查询逻辑,无需手动递归遍历所有子组:


简化查询方案

方案1:仅需获取群组+所有子组的直接成员(GitLab 13.11及以上版本支持)

在原有群组成员查询接口中添加include_descendant_groups=true参数即可,接口会自动返回当前群组 + 所有层级子组的直接成员,且自动去重,无需手动遍历子组:

curl -H "PRIVATE-TOKEN: xxxx" -k "https://gitlab.xxxx/api/v4/groups/319/members?per_page=100&page=1&include_descendant_groups=true"

方案2:需要同时获取下属项目的成员

没有原生参数支持同时拉取项目成员,但可以通过两步操作大幅简化逻辑:

  1. 单次调用群组项目查询接口,添加include_subgroups=true参数,直接拿到该群组下所有层级子组的全部项目列表,无需递归遍历子组查项目:
curl -H "PRIVATE-TOKEN: xxxx" -k "https://gitlab.xxxx/api/v4/groups/319/projects?per_page=100&page=1&include_subgroups=true"
  1. 遍历上一步拿到的项目ID列表,逐个调用项目成员接口拉取成员即可

方案3:旗舰版专属方案

如果你使用的是GitLab 14.10及以上的旗舰版本,可以直接调用billable_members接口,单次返回所有拥有该群组下任意资源(子组、项目)访问权限的用户,最符合需求:

curl -H "PRIVATE-TOKEN: xxxx" -k "https://gitlab.xxxx/api/v4/groups/319/billable_members?per_page=100&page=1"

补充注意事项

  • 所有列表类接口都需要处理分页逻辑,per_page参数最大支持100,返回结果超过100条时需要修改page参数遍历所有分页
  • 所有接口默认返回的是直接分配权限的成员,不包含继承自更高层级群组的成员,如果需要包含继承的成员,可以把接口路径中的members改成members/all

内容的提问来源于stack exchange,提问作者Loïc Madiès

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:15:01