如何解决如何使用 PUT 或 POST 请求将某些内容设置为列表而不是字符串到 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,"")} )
,不会抛出错误但根本不起作用,即使我看过的任何地方都没有看到 PUT 请求和 POST 请求的语法之间有任何区别。所以我认为这可能与 GitLab API 不接受 POST 请求有关。 (POST 请求是否应该与 PUT 请求不同?)
所以,我不知道如何使用 PUT 或 POST 请求将“标签”设置为具有多个值的列表(我知道它可以)。任何想法将不胜感激:)
干杯, 米兰
解决方法
您不能 PUT(或 POST)列表值(因为 HTTP 查询只是一个字符串)。但是,{"labels":",".join(mr_new_labels)}
会起作用 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。