GitLab API v4默认仅返回20条Issue评论,如何获取全部?
如何通过GitLab API v4获取Issue的所有评论?
GitLab API v4默认采用分页机制,获取单个Issue的评论时,单次请求只会返回最多20条内容。要获取所有评论,可按以下两种场景处理:
1. 单次请求拉取最大数量评论
GitLab API允许通过per_page参数指定单次返回的条目数,最大值为100。如果你的Issue评论总数不超过100条,直接在请求中添加该参数即可:
$ key="$PRIVATE_TOKEN" $ proj_url="https://<URL>/api/v4/projects/$CI_PROJECT_ID" $ curl -s --header "PRIVATE-TOKEN: $key" "$proj_url/issues/193/notes?per_page=100"
2. 分页遍历获取全部评论
如果评论数量超过100条,就需要分页遍历所有页面。可以通过指定page参数循环请求,或者解析响应头的分页信息自动遍历,以下是自动遍历的示例脚本:
#!/bin/bash key="$PRIVATE_TOKEN" proj_url="https://<URL>/api/v4/projects/$CI_PROJECT_ID" issue_id=193 per_page=100 page=1 all_notes="" while true; do # 同时获取响应头和响应体 response=$(curl -s -D - --header "PRIVATE-TOKEN: $key" "$proj_url/issues/$issue_id/notes?per_page=$per_page&page=$page") # 提取响应体内容(跳过响应头部分) notes=$(echo "$response" | sed -n '/^\r$/,$p') # 返回空内容或空数组时,停止循环 if [ -z "$notes" ] || [ "$notes" == "[]" ]; then break fi # 拼接每一页的评论数据 all_notes="$all_notes$notes," page=$((page+1)) done # 修正JSON格式,生成合法数组 all_notes="[${all_notes%,}]" echo "$all_notes"
关键参数说明
per_page=100:设置单次请求返回的最大条目数page=N:指定请求第N页的内容
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

