如何使用JavaScript通过Bitbucket API拉取PR全部嵌套层级评论?
实现思路
核心是递归遍历嵌套的comments数组,无需额外依赖,几十行代码即可实现。
步骤1:拉取全量活动数据
调用/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities接口即可,若PR活动量较大,可在请求参数中添加limit=1000减少分页次数,多页数据合并为完整的activities数组后再处理即可。
步骤2:嵌套评论提取代码实现
// 递归提取单个评论节点下的所有评论(包含自身+所有层级子回复) function extractAllComments(commentNode) { const allComments = [commentNode] // 遍历当前评论的子回复列表递归处理 if (Array.isArray(commentNode.comments) && commentNode.comments.length) { commentNode.comments.forEach(child => { allComments.push(...extractAllComments(child)) }) } return allComments } // 主逻辑:从接口返回的活动列表中提取全量评论 function getAllPrComments(activities) { const comments = [] activities.forEach(activity => { // 仅筛选评论类型的活动 if (activity.action === 'COMMENTED' && activity.comment) { comments.push(...extractAllComments(activity.comment)) } }) return comments }
用法示例
// activities为接口返回的全量活动数组 const allNestedComments = getAllPrComments(activities) // 输出结果为扁平化数组,包含所有父评论、子回复、深层嵌套回复,保留接口返回的所有原始字段 console.log('全量评论总数:', allNestedComments.length)
补充说明
如果需要保留评论的层级结构,不需要扁平化输出,直接收集所有activity.comment根节点即可,无需做递归扁平化处理。
内容的提问来源于stack exchange,提问作者Kara Luton
相关产品推荐
相关产品推荐

