Gitlab API 按主题过滤项目(项目标签)

Posted

技术标签:

【中文标题】Gitlab API 按主题过滤项目(项目标签)【英文标题】:Gitlab API filter projects by topic (project tag) 【发布时间】:2021-09-08 23:50:08 【问题描述】:

我无法通过 api 的“标签”过滤项目(项目设置中的命名主题)。

我会得到与以下 UI 查询 https://gitlab.xxxxxx.com/explore/projects?tag=ruby 相同的结果

它返回所有标记有“ruby”主题的项目。

这是我在描述单个项目时使用 api 得到的结果示例:

curl --header "Authorization: Bearer $GITLAB_TOKEN" "https://gitlab.hostname.com/api/v4/projects/42?simple=true" | json_pp
...
"tag_list" : [
  "ruby"
],
...

根据文档 (https://docs.gitlab.com/ce/api/projects.html#list-all-projects),我应该能够使用主题参数过滤项目 tag_list

curl --header "Authorization: Bearer $GITLAB_TOKEN" "https://gitlab.hostname.com/api/v4/projects?topic=ruby&simple=true" | json_pp

但是这个查询返回了我所有的项目,即使是那些没有任何标签或错误的项目

我尝试使用“tag”或“tag_list”而不是“topic”,但没有达到我的预期

有人知道如何进行吗?

请注意,我使用的是 gitlab CE 13.9

【问题讨论】:

【参考方案1】:

正如您所提到的,您使用的是 gitlab 13.9 版,并且通过 tag_listtopic 过滤项目的功能已在 14 版及更高版本中提供。

见: https://docs.gitlab.com/13.11/ee/api/projects.html#list-all-projects

【讨论】:

确实,我没有检查文档的正确版本,谢谢【参考方案2】:

另一种方法:使用新的 API 主题。

见GitLab 14.5(2021 年 11 月)

使用 API 管理项目主题

在此版本中,感谢 Jonas Wälter’s 的贡献,在项目设置中添加主题比以往任何时候都容易。

除了 UI 中最新的项目主题管理功能外,您现在还可以使用 API 按列表或 ID 检索主题。

我们还让管理员可以通过 API 创建或编辑主题。这在 UI 和 API 中的项目主题管理之间引入了完全平等。

参见Documentation 和Issue。

Listing projects assigned to a topic 仍然通过project API 完成。 但是现在围绕主题的 API 更加完善了。

【讨论】:

以上是关于Gitlab API 按主题过滤项目(项目标签)的主要内容,如果未能解决你的问题,请参考以下文章

gitlab api标签创建错误

Gmail API Watch 未按标签过滤

Instagram 按名称 API 查找 Hashtag

Gitlab Python API - 共享项目日期的属性

Python Gitlab API - 列出组/子组的共享项目

我在哪里可以找到 GitLab API 的项目 ID?