我如何使用 PUT 或 POST 请求将某些内容设置为列表而不是字符串(到 Gitlab API)?

How can I use a PUT or POST request to set something as a list rather than a string (to the Gitlab API)?

我只是想设置 GitLab 合并请求的标签。

当我向 GitLab 发出这个 PUT 请求时

requests.put( https://gitlab.com/api/v4/projects/{}/merge_requests/{}".format(project_id, mr_num), {"labels":mr_new_labels}, headers={'PRIVATE-TOKEN': os.getenv("GITLAB_ACCESS_TOKEN", "")} ),

如果 mr_new_labels 是任何字符串或包含 1 个元素的列表,它将起作用 - 所以如果请求只是设置 1 个标签(或 0 个标签,带有空字符串)。

但是,如果mr_new_labels是一个有多个元素的列表,只有最后一个元素会是'put'(可能列表中的元素依次是'put',互相替换,而不是一次放置列表),因此合并请求将只有 1 个标签。

我曾尝试使用 POST 请求来执行此操作,但对我来说,POST 请求的语法与 PUT 请求相同,任何字符串或列表值为 mr_new_labels, 即 requests.post( https://gitlab.com/api/v4/projects/{}/merge_requests/{}".format(project_id, mr_num), {"labels":mr_new_labels}, headers={'PRIVATE-TOKEN': os.getenv("GITLAB_ACCESS_TOKEN", "")} ),不会抛出错误但根本不起作用,即使在我查看的任何地方我都没有发现 PUT 请求和 POST 请求的语法之间有任何区别。所以我认为这可能与 GitLab API 不接受 POST 请求有关。 (POST 请求是否应该与 PUT 请求不同?)

所以,我不知道如何使用 PUT 或 POST 请求将 'labels' 设置为具有多个值的列表(我知道它可以)。任何想法将不胜感激:)

干杯, 米兰

您不能 PUT(或 POST)列表值(因为 HTTP 查询只是一个字符串)。但是,{"labels":",".join(mr_new_labels)} 会起作用 :)