如何在gitlab api问题查询中使用`not`条件

问题描述

我正在尝试阅读没有标签 resolved 的未解决问题标题列表。为此,我指的是 API 文档 (https://docs.gitlab.com/ee/api/issues.html),其中提到了 NOT 但我无法让 NOT 工作。

到目前为止,我已经尝试使用以下 python 脚本来阅读问题列表,现在我无法找到如何使用 NOT 过滤没有 resolved 标签的问题。

import gitlab

# private token or personal token authentication
gl = gitlab.Gitlab('https://example.com',private_token='XXXYYYZZZ')

# make an API request to create the gl.user object. This is mandatory if you
# use the username/password authentication.
gl.auth()

# list all the issues
issues = gl.issues.list(all=True,scope='all',state='opened',assignee_username='username')
for issue in issues:
    print(issue.title)

解决方法

Gitlab issues api documentation 开始,not 的类型为 Hash。这是一种特殊类型的文档 here

例如,要排除标签 Category:DASTdevops::secure,并排除里程碑 13.11,您可以使用以下参数:

not[labels]=Category:DAST,devops::secure
not[milestone]=13.11

api 示例:https://gitlab.com/api/v4/issues?scope=all&state=opened&assignee_username=derekferguson&not[labels]=Category:DAST,devops::secure&not[milestone]=13.11

使用 gitlab python 模块,您需要通过添加更多关键字参数来传递一些额外的参数:

import gitlab

gl = gitlab.Gitlab('https://gitlab.com')

extra_params = {
    'not[labels]': "Category:DAST,devops::secure","not[milestone]": "13.11"
}
issues = gl.issues.list(all=True,scope='all',state='opened',assignee_username='derekferguson',**extra_params)
for issue in issues:
    print(issue.title)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...