使用Bitbucket REST API转私有仓库为公开时遇400错误求助
解决Bitbucket API修改仓库可见性返回400错误的问题
我尝试将Bitbucket上的私有仓库转为公开仓库,编写了以下Python代码调用Bitbucket REST API:
import requests workspace = '' base_url = 'https://api.bitbucket.org/2.0/' session = requests.Session() session.auth = (username, password) headers = { 'Content-Type': 'application/json' } data = { "type": "repository", "is_private": False } url = f'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}' res = session.put(url, json=data, headers=headers) print(res, res.reason)
执行后收到<Response [400]> Bad Request错误,请问是否需要在请求体中传入其他数据?
问题分析与解决方案
移除请求体中的冗余字段
Bitbucket的仓库更新接口不需要传入type字段,仅需提交要修改的属性即可。多余的字段会触发400错误,修改后的请求体只需保留is_private: False。验证认证与参数正确性
- 建议使用App Password而非账号密码进行认证,需确保App Password拥有仓库修改权限(权限列表中勾选"Repositories: Write")。
- 检查
workspace和repo_slug是否拼写正确,二者均区分大小写。
- 查看详细错误信息
在代码中添加响应内容打印,能获取Bitbucket返回的具体错误提示,帮助快速定位问题:
print(res.json())
修改后的完整代码示例
import requests workspace = "你的工作区名称" repo_slug = "你的仓库slug" username = "你的Bitbucket用户名" app_password = "你的App Password" session = requests.Session() session.auth = (username, app_password) headers = { 'Content-Type': 'application/json' } data = { "is_private": False } url = f'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}' res = session.put(url, json=data, headers=headers) print(res.status_code, res.reason) # 打印详细错误信息以便排查 if res.status_code != 200: print(res.json())
内容的提问来源于stack exchange,提问作者NavaneethaKrishnan
相关产品推荐
相关产品推荐

