Я пытаюсь получить данные, указанные ниже, с помощью модуля sync-request.
https://api.github.com/repos/rethinkdb/rethinkdb/stargazers
Я получаю данные, когда звоню в браузере или через почтальона. Но я получаю 403 запрещенныхошибка при вызове с использованием sync-запроса в моем узле api.
Мой код выглядит следующим образом.
var request = require("sync-request"); var response = request('GET', 'https://api.github.com/repos/rethinkdb/rethinkdb/stargazers', { headers: {}, json: true });
Я могу получить данные многих других API, но не этот.Пожалуйста, помогите.
Попробуйте использовать токен доступа вместе с вызовом API GitHub, как этот
[https://api.github.com/repos/rethinkdb/rethinkdb/stargazers?access_token=f33d1f112b7883456c990028539a22143243aea9]
Поскольку вы говорите, что API работает в браузере, он не должен бытьпроблема.
Когда вы используете слишком много вызовов через GitHub API, они выдают следующее сообщение
{ "message": "API rate limit exceeded for 192.248.24.50. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)", "documentation_url": "https://developer.github.com/v3/#rate-limiting" }
Чтобы преодолеть эту проблему, вы можете использовать токен доступа, используятокен доступа, который вы также можете использовать для доступа к личным репозиториям в вашей учетной записи.Вот ссылка для получения токена доступа [https://github.com/settings/developers]
В теле ответа уже содержится объяснение:
Запрос запрещен административными правилами.Убедитесь, что в вашем запросе есть заголовок User-Agent (http://developer.github.com/v3/#user-agent-required). Проверьте https://developer.github.com для других возможных причин.
Он будет работать следующим образом:
var response = request('GET', 'https://api.github.com/repos/rethinkdb/rethinkdb/stargazers', { headers: { 'User-Agent': 'Request' }, json: true });
Настоятельно не рекомендуется использовать sync-request, поскольку синхронность достигается с помощью хака и может блокировать процесс на длительное время.
sync-request
Для последовательного выполнения request-promise может использоваться вместе с async..await.
request-promise
async..await