使用R带身份认证抓取Bitbucket内部项目仓库URL的问题求助
解决方案
问题根因
你当前请求的是Bitbucket项目基础信息接口,仅返回项目元数据,不包含下属仓库列表,需要调用Bitbucket专门的仓库列表REST API获取对应数据。
操作步骤
- 调整请求URL为正确的API路径
企业内部部署的Bitbucket Server/DC版本,获取指定项目下所有仓库的标准API格式为:https://{Bitbucket域名}/rest/api/1.0/projects/{项目key}/repos
对应你的场景,请求地址改为:https://bitbucket.mycompany.be/rest/api/1.0/projects/myproject/repos
若项目下仓库数量超过25个(接口默认单页返回上限),可追加limit参数调整单页返回数量,例如?limit=100;仓库总量超过单页上限时可配合start参数翻页拉取全量数据。 - 调整后的R请求示例代码:
library(httr) # 替换为上述正确的API地址 myurl <- "https://bitbucket.mycompany.be/rest/api/1.0/projects/myproject/repos?limit=100" r <- GET(myurl, verbose(), authenticate(user = "myID", password = "myPW", type = "basic")) # 解析返回的JSON结构 res <- content(r, "parsed") # 提取所有仓库的URL,示例为提取HTTP克隆地址,可按需替换为SSH克隆地址或仓库页面地址 repo_urls <- lapply(res$values, function(x) x$links$clone[[1]]$href)
- 结果说明
接口返回的JSON中values字段为仓库列表数组,每个仓库对象的links字段下包含仓库页面地址、HTTP克隆地址、SSH克隆地址三类URL,按需提取即可。
注意事项
如果调用1.0版本接口返回404,可尝试将路径中的1.0替换为2.0适配不同的Bitbucket部署版本。
内容的提问来源于stack exchange,提问作者gaut
相关产品推荐
相关产品推荐

