通过RESTful SDK从GitHub项目卡片获取关联Issue编号的方法咨询
关于获取GitHub项目卡片关联Issue编号的实现方案
目前GitHub REST API原生不会在项目卡片的返回结构中直接提供关联的Issue编号,你可以根据自己的使用场景选择以下两种更稳妥的实现方式,避免手动拆分URL带来的不可靠问题:
方案1:直接请求content_url获取完整Issue信息(稳定性最高)
调用octokit的通用请求方法直接请求卡片的content_url字段,无需自行解析路径,还可以自动适配不同类型的关联内容,同时拿到Issue的所有元数据,适合需要同时操作Issue多个属性的场景。
示例代码:
// 遍历你已经拿到的项目卡片列表 for (const card of project_cards) { // 跳过未关联任何资源的纯笔记类卡片 if (!card.content_url) continue // 直接请求content_url获取完整的Issue数据 const { data: issue } = await octokit.request(card.content_url) // 直接获取Issue编号 const issueNumber = issue.number // 后续修改Issue标签的逻辑直接使用issueNumber即可 }
方案2:正则匹配提取Issue编号(性能最优)
如果需要批量处理大量卡片,不想额外发起请求,可以基于GitHub官方固定的content_url格式做正则提取,比手动拆分字符串的兼容性更高。
示例代码:
// 封装提取方法 const getIssueNumFromCard = (card) => { // 过滤非Issue关联的卡片 if (!card.content_url || !card.content_url.includes('/issues/')) return null const matchRes = card.content_url.match(/\/issues\/(\d+)$/) return matchRes ? Number(matchRes[1]) : null } // 调用示例 const issueNumber = getIssueNumFromCard(cardItem)
注意事项
处理前需要先判断卡片是否有关联内容,同时过滤掉关联Pull Request的卡片,避免提取到错误的编号。
内容的提问来源于stack exchange,提问作者aronchick
相关产品推荐
相关产品推荐

