2015-06-14 3 views
0

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

Константа определяются как 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"} 

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

ответ

0

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

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

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

url = 'https://api.github.com/user/starred/{owner}/{repo}'.format(
      owner=GITHUB_USER, 
      repo=GITHUB_REPO 
    ) 
+0

Буквально не upvote достаточно трудно. Это правильный ответ, но я не уверен, что могу отметить его. – user3586341

Смежные вопросы