В ролях репозиторий с API GitHub

Я пытаюсь создать репозиторий, используя GithubAPI. Это делается с помощью запроса PUT/user/starred/:owner/:repo, Я попытался реализовать эту функцию в python, используя библиотеку запросов, но она не работает. Вот минимальный рабочий пример:

Константа определяется как GITHUB_API = api.github.com, GITHUB_USER = the username of the owner of the repo to be starred, а также GITHUB_REPO = the name of the repo to be starred

url = urljoin(GITHUB_API, (user + '/starred/' + GITHUB_USER + '/' + GITHUB_REPO))
r = requests.put(url,auth=(user,password))
print r.text

Этот код приводит к ошибке, которая гласит:

{"message":"Not Found","documentation_url":"https://developer.github.com/v3"}

Я думаю, что мне не хватает чего-то фундаментального в процессе выдачи запроса PUT.

1 ответ

Решение

Проблема здесь в параметрах, которые вы передаете urljoin(), Первый параметр должен быть абсолютным URL, а второй параметр - относительным URL. urljoin() затем создает абсолютный URL из этого.

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

В этом случае я бы отказался от urljoin() -функция полностью, и вместо этого используйте простую подстановку строк:

url = 'https://api.github.com/user/starred/{owner}/{repo}'.format(
          owner=GITHUB_USER,
          repo=GITHUB_REPO
      )
Другие вопросы по тегам