从 BitBucket Rest API v2.0 获取文件

2024-01-17

我有一个脚本,它使用 bitbucket REST API (1.0) 从 GIT 获取文件,但它最近停止工作。我推测这可能是由于 v1 REST API 被贬值所致,但我不确定。

无论如何,我正在尝试使用新的 2.0 REST API 检索文件,但由于请求不断失败,我似乎无法获得正确的语法。

我从curl 开始,因为它最容易测试。这就是我正在尝试的:

curl -u [email protected] /cdn-cgi/l/email-protection "https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/downloads/Scripts/Environment Setup/test.txt"

Enter host password for user '[email protected] /cdn-cgi/l/email-protection': redacted

{"type": "error", "error": {"message": "Resource not found", "detail": "There is no API hosted at this URL.\n\nFor information about our API's, please refer to the documentation at: https://developer.atlassian.com/bitbucket/api/2/reference/"}}

这是我正在使用的参考文档:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/downloads/%7Bfilename%7D https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/downloads/%7Bfilename%7D

也许我使用了错误的功能?我不知道。


为了后代的缘故,您不想使用以下命令从 bitbucket 下载单个文件:

https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/downloads/path/to/your/file.txt https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/downloads/path/to/your/file.txt

(“下载”是下载整个存储库文件,如 .zip 文件)

相反,你想做的是:

curl --user [email protected] /cdn-cgi/l/email-protection:password "https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/src/master/path/to/file.txt"

如果您尝试使用 Invoke-RestRequest(在 powershell 中),请注意有一些额外的步骤。使用旧的 1.0 API 你可以这样做:

$cred = Get-Credential

$uri = "https://api.bitbucket.org/1.0/repositories/MyCompany/$($filepath)"

# Get the files from bitbucket (GIT)
Invoke-RestMethod -Credential $cred -Uri $uri -Proxy $proxyUri -OutFile $destination 

新的 2.0 API 不再有效。 Powershell 的 Invoke-RestMethod 在发送凭据之前等待 401 响应,而新的 2.0 bitbucket api 从未提供响应,因此凭据永远不会发送,从而导致 403 禁止。

要解决这个问题,您必须使用以下丑陋的黑客来强制 Invoke-RestMethod 立即在授权标头中发送凭据:

$cred = Get-Credential


$uri = "https://api.bitbucket.org/2.0/repositories/MyCompany/$($filepath)"
$username = ($cred.GetNetworkCredential()).username
$password = ($cred.GetNetworkCredential()).password
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

# Get the files from bitbucket (GIT)
Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Uri $uri -Proxy $proxyUri -OutFile $destination 

希望这可以帮助其他人在未来!

感谢@Jim Redmond 的帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 BitBucket Rest API v2.0 获取文件 的相关文章

  • 使用 libcurl 获取 https

    我正在尝试连接到 google api 这在我的终端中运行良好 我正在这样做 curl https www googleapis com tasks v1 users me lists header Authorization Bearer
  • 使用 JavaScript 时如何保护 API Key?

    因此 我正在开发一个仅供我自己使用的小型应用程序 也可能是 Git 上的一个开源项目 我正在使用来自 Envato Marketplaces 的 API 众所周知 有些操作不需要任何密钥 但同时也有一些操作需要 我首先用 PHP 为 Env
  • 如何将Android中的cURL发送到REST服务

    我是 android 新手 我想从 REST 服务获取一些数据 但在初始化发送到 REST 服务的方法时遇到一些问题 您知道 REST 服务使用 cURL 来操作一些数据 POST PUT GET DELETE 现在如何在 android
  • Twitch API - 无法使用 PHP 获取身份验证令牌

    stackoverflow 的成员们大家好 我不是一个喜欢寻求帮助的人 但在这种情况下 我认为这是解决我的问题的唯一方法 谷歌并没有给我太大帮助 所以 我的问题 我想使用 Twitch API 获取一些数据 听起来很容易 我希望是这样 下面
  • 有什么方法可以处理 ASP.Net MVC 中的 Put 和 Delete 动词吗?

    只是想知道是否有人知道真正宁静的 Put delete 实现 asp net mvc Preview 5 最好 查看 mvccontrib 项目 http www mvccontrib org http www mvccontrib org
  • 为什么更喜欢 REST 而不是 SOAP?

    如果我需要一个 Web 服务来来回传递一个复杂的对象 我是否有理由更喜欢 SOAP 而不是 REST 以下是可能的 SOAP 消息的示例
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types
  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题
  • 在没有 OneDrive API 的情况下,无法在 Power BI 中使用 R 脚本在安全的 OneDrive 文件夹上写入 csv 文件

    我正在使用 R 在 Power BI 服务中编写一个脚本 该脚本会自动将特定数据集下载到 OneDrive 上的文件中 但是 我不断收到此错误 只能打开 URL 进行读取Error in file file ifelse append a
  • 用于检索名人信息的 API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Web API 添加到 asp.net MVC 项目时出现问题(追溯)

    我正在 Visual Studio 2013 中使用 asp net mvc 迈出第一步 但遇到了一个奇怪的问题 我以 MVC 的形式启动了我的项目 并且没有选中 Web API 框来包含核心参考 不过现在我想使用 Web API 功能 我
  • PHP - 为什么使用 Guzzle 而不是 cURL?

    在我的应用程序中 我最初开始使用 cURL 从各种 API 检索数据 今天 我尝试使用 Guzzle 来完成同样的任务 到目前为止 cURL 和 Guzzle 似乎都工作得同样好 判断依据Github https github com gu
  • Curl 请求中的字符发生变化

    当我查看使用以下代码获得的 XML 数据源时 XML 代码中的特殊字符是正确的 然而 当 Curl 返回数据时 像 和 这样的字符会被转换为 resp 和 这种转换发生在所有特殊字符上 这两个只是一个例子 myvar curl init m
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • Keycloak访问模拟API

    我们开始使用 keycloak 3 4 3 我们需要在我们的应用程序中引入模拟功能 我们发现 keycloak 有一个模拟 api 不幸的是它不会为用户返回令牌 而是返回一个重定向链接 用户可以 选择 自己的客户端 我们在这里找到了 htt
  • 在 PHP cURL 中设置 FTP 模式

    我有一些代码使用 PHP cURL 库通过 FTP 上传一些文件 我被告知将 FTP 模式从被动切换为主动 但我找不到如何做到这一点 相关文档中似乎没有选项 我实际上不确定它当前使用的是什么模式 或者我如何查看它 这个问题的答案是使用 cu
  • 寻找在 Ruby on Rails 中构建安全 REST API 的建议

    我正开始为我正在从事的项目构建 REST API 这促使我对使用 RoR 构建 API 的最佳方法进行了一些研究 我很快发现 默认情况下 模型是向世界开放的 只需在 URL 末尾添加 xml 并传递适当的参数即可通过 URL 进行调用 那么
  • 来自curl的NSUrlRequest用于条纹

    我需要使用以下说明发出 http post 请求 curl https api stripe com v1 tokens u sk test BQokikJOvBiI2HlWgH4olfQ2 d bank account country U
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B

随机推荐