如何通过API添加/更新GitLab Issue的迭代?
GitLab API更新Issue迭代失败的解决办法
问题根源
- 首次请求报错:GitLab的Issue更新API要求PUT请求必须携带至少一个官方认可的可更新字段。你只传
iteration_id时,因为没指定JSON类型的请求头,GitLab没解析到这个参数,所以判定你没传有效字段,抛出错误。 - 添加其他字段后迭代没生效:还是请求格式的问题——默认
--data发送的是表单格式,GitLab没法正确解析JSON请求体,导致iteration_id被忽略,只处理了你添加的那个字段。
正确的curl命令写法
必须指定Content-Type: application/json头,让GitLab能识别JSON格式的请求体,同时可以同时传递iteration_id和一个你不需要修改的可更新字段(比如原标题、原有权重等,满足API的必填字段要求)。
示例命令:
curl --request PUT \ --header "PRIVATE-TOKEN: <MY_TOKEN>" \ --header "Content-Type: application/json" \ --data '{"iteration_id": 123, "title": "你的Issue原标题"}' \ "https://gitlab.example.com/api/v4/projects/<PROJECT_ID>/issues/<ISSUE_ID>"
如果你的curl版本是7.82及以上,可以用更简便的--json参数,它会自动添加JSON请求头:
curl --request PUT \ --header "PRIVATE-TOKEN: <MY_TOKEN>" \ --json '{"iteration_id": 123, "title": "你的Issue原标题"}' \ "https://gitlab.example.com/api/v4/projects/<PROJECT_ID>/issues/<ISSUE_ID>"
小技巧
要是不想改动任何其他字段,就选一个Issue原本就有的字段传原值,比如Issue的weight是3,就传"weight":3,这样既满足API的字段要求,又不会改动其他内容,只更新迭代ID。另外要确认iteration_id是项目级的正确ID,群组迭代需要用iteration_iid且项目有权限访问。
内容的提问来源于stack exchange,提问作者Tejaswini K
相关产品推荐
相关产品推荐

