GitLab API - 搜索项目

4

我正在使用:

GET https://localhost/api/v4/search?scope=projects&search=test

来查找名为"test"的项目,但是我不仅得到了名为"test"的项目,还有"qtest"、"testot"或"test1"等。

有没有可能只得到精确匹配的名称?

2个回答

3
根据项目API,不会。它将返回包含您搜索字符串的所有项目,但一旦检索到结果,您应该能够对其进行筛选。
可用的选项包括sortorder_by。您可以按idnamecreated_atlast_activity_at字段排序。

2

使用jq可以过滤模糊搜索返回的结果:

project_name="test"

curl --silent --show-error --location \
  "https://gitlab.com/api/v4/search?scope=projects&search=${project_name}" \
  --header "PRIVATE-TOKEN: ${GITLAB_COM_API_PRIVATE_TOKEN}" | jq \
  --raw-output --arg project_name "${project_name}" '.[] | \
  select(.name == $project_name)'

当然,这会返回12个项目。哪一个是我的?

如果您能包含命名空间,那将更好。

project_path_with_namespace="$username/test"

curl --silent --show-error --location \
  "https://gitlab.com/api/v4/search?scope=projects&search=${project_path_with_namespace}" \
  --header "PRIVATE-TOKEN: ${GITLAB_COM_API_PRIVATE_TOKEN}" | jq \
  --arg path_with_namespace "${project_path_with_namespace}" '.[] | \
  select(.path_with_namespace == $path_with_namespace)'

现在搜索不再模糊,只要该路径存在这样的项目,它就会始终返回精确结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接