我正在构建一个shell应用程序,允许我的队友通过运行一些命令来启动新项目。它应该能够在该项目中创建一个新项目和一个新的存储库。
虽然我在创建新存储库时指定项目键/ uuid,但它不起作用。我期待的是成功消息,其中包含新存储库的详细信息。大多数时候,这就是我得到的:
{"type": "error", "error": {"message": "string indices must be integers", "id": "ef4c2b1b49c74c7fbd557679a5dd0e58"}}
或者存储库转到为该团队创建的第一个项目(根据Bitbucket的API documentation,当没有指定项目键/ uuid时,这是默认行为。)
所以我猜我的请求与我之间存在某种关系。他们的代码收到了吗?因为看起来他们甚至没有得到请求数据。
# Setup Request Body
rb = {
"scm": "git",
"project": {
"key": "PROJECT_KEY_OR_UUID"
}
}
# Setup URL
url = "https://api.bitbucket.org/2.0/repositories/TEAM_NAME/REPOSITORY_NAME"
# Request
r = requests.post(url, data=rb)
答案 0 :(得分:0)
在api文档的代码中,您会注意到Content-Type标题是" application / json"。
$ curl -X POST -H "Content-Type: application/json" -d '{
"scm": "git",
"project": {
"key": "MARS"
}
}' https://api.bitbucket.org/2.0/repositories/teamsinspace/hablanding
在您的代码中,您在data
参数中传递数据,这会创建一个" application / x-www-form-urlencoded" Content-Type标头,并对您的发布数据进行urlencodes。
相反,您应该使用json
参数。
rb = {
"scm": "git",
"project": {
"key": "PROJECT_KEY_OR_UUID"
}
}
url = "https://api.bitbucket.org/2.0/repositories/TEAM_NAME/REPOSITORY_NAME"
r = requests.post(url, json=rb)