Невозможно связать новые репозитории с проектами, использующими API Bitbucket

Я создаю приложение оболочки, которое позволяет моим товарищам по команде запускать новые проекты, выполняя несколько команд. Он должен иметь возможность создать новый проект и новый репозиторий внутри этого проекта.

Хотя я указываю ключ проекта /uuid при создании нового репозитория, он не работает. Я ожидаю сообщения об успехе с подробностями для нового хранилища. В большинстве случаев это то, что я получаю:

{"type": "error", "error": {"message": "string indices must be integers", "id": "ef4c2b1b49c74c7fbd557679a5dd0e58"}}

или репозиторий переходит к первому проекту, созданному для этой команды (это поведение по умолчанию, когда ключ /uuid проекта не указан, согласно документации API Bitbucket).

Итак, я предполагаю, что между моим запросом и кодом, получающим его, что-то есть? Потому что, похоже, они даже не получают данные запроса.

# 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)

1 ответ

В коде из документации 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 параметр, который создает заголовок Content-Type "application/x-www-form-urlencoded" и кодирует ваши почтовые данные.

Вместо этого вы должны использовать 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)
Другие вопросы по тегам