Я написал короткое приложение для командной строки, чтобы автоматизировать некоторые скучные части моей работы, связанные с github. Вполне вероятно, что этот служебный сценарий будет использоваться мной в 95% случаев и в 5% случаев другим разработчиком - его не нужно сильно обрабатывать, и я могу самостоятельно обрабатывать секреты аутентификации, поэтому я просто хочу создайте один секрет, который никогда не изменится, и покончите с этим.
Скрипт работает отлично, за исключением того, что в последней строке мне нужно сделать ровно один вызов API github с методом POST, и я считаю, что аутентификация не выполняется, так как я получаю результат 404, когда использую POST, но я этого не делаю. t когда я пробую GET.
Вот подробности.
Я использую популярную библиотеку Python requests, с которой я хорошо знаком.
На GitHub я создал приложение OAuth и скопировал идентификатор клиента, который будет проверен в коде, и секрет клиента, который считывается во время выполнения из файла, который не зарегистрирован.
В соответствии с эта документация я затем делаю запрос на создание новой версии, передавая аутентификацию следующим образом:
url = 'https://api.github.com/repos/rec/testy/releases'
data = {
'tag_name': 'v1.0.1',
'target_commitish': 'master',
'name': 'name',
'body': 'release body',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
}
res = requests.post(url, data=data)
print(res, res.text)
Если я заменю requests.post на requests.get, я получу ожидаемую информацию о выпусках, поэтому я считаю, что выполняю аутентификацию неправильно.
Какой самый простой способ настроить мой запрос, чтобы заставить эту работу работать, учитывая, что это в основном одноразовый сценарий для личного использования?
Ах, я набрал put вместо post. Спасибо за поправку, исправлю.
Это сделано, и я зафиксировал здесь код: github.com/rec/BiblioPixel/blob/stack-overflow/scripts/…, чтобы вы могли видеть, что я на самом деле запускаю.






Создайте токен: https://github.com/settings/tokens
В вашем блоке данных используйте
'token': <YOUR_TOKEN>
Вместо client_id и client_secret. В качестве альтернативы см. Это: https://github.com/PyGithub/PyGithub
Я не вижу ссылки на документацию github, которой вы поделились с поддержкой PUT, хотя она позволяет использовать POST или PATCH (оба из которых поддерживаются запросами). Вы уверены, что не получаете сообщение об ошибке, потому что метод PUT не существует?