Как пометить репозиторий github с помощью Github API. Что не так с моим запросом? - PullRequest
0 голосов
/ 28 июня 2018

Я изучаю NodeJS и пытаюсь поиграть с GithubAPI, используя модуль запроса. Однако я не могу получить запрос на поставку репо - работает.

Вот мой код:

        let repo = JSON.parse(response);
        client.get(req.cookies.sessionid, function (err, response) {
            request.put("https://api.github.com/user/starred/" + repo.author + "/" + repo.name, {
                headers:{
                    'User-Agent': 'request',
                    'Authorization':"token "+response,
                    "Content-Length":0,
                }
            }, function (errors, response, body) {
                console.log(errors);
            })
        }

Мне кажется, что я следовал инструкциям API , но вот ответ, который я получил: {"message":"Not Found","documentation_url":"https://developer.github.com/v3/activity/starring/#star-a-repository"}. Однако владелец репо и имя верны. Чего мне не хватает?

EDIT

Я также пытался использовать этот пакет, но получаю то же сообщение об ошибке. Я также попытался изменить токен авторизации и получил 401 неправильную ошибку аутентификации, и я ранее исправил ошибки заголовков. Также я дважды проверил URL и владелец / имя репо правильно.

1 Ответ

0 голосов
/ 18 сентября 2018

Это не специфично для NodeJS, но с вашим запросом что-то не так. Этот метод JS ajax устанавливает тип запроса как PUT , который используется для замены ресурсов или коллекций.

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

var addToFavorites = function(repoObj){
    $.ajax({ 
        url: 'https://api.github.com/user/starred/<the author>/<the repo>',
        type: 'PUT',
        beforeSend: function(xhr) { 
            xhr.setRequestHeader("Authorization", "token " + authStr); 
        }
    }).done(function(response) {
        console.log(response);
    }).error(function(err) {
        console.log(err);
    });  
};

Что касается вашего токена аутентификации, ему нужна область public_repo, чтобы использовать помеченные функции, поэтому убедитесь, что вы заранее правильно определили и создали свой личный токен доступа.

...