Как сделать запрос GET в XMLHttpRequest? - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы сделать этот запрос GET к GitHub API: https://developer.github.com/v3/repos/#list-all-public-repositories

Однако я не знаю, как это сделать.Я сделал curl ING, но впервые я буду использовать запросы HTTP и API.

Я пробовал некоторые онлайн-уроки, но они не совсем показывают, как сделатьконкретный запрос GET.

Вот что у меня есть:

function reqListener () {
    console.log(this.responseText);
  }
  var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
  var oReq = new XMLHttpRequest();
  oReq.addEventListener("load", reqListener);
  oReq.open("GET", "https://api.github.com/");
  oReq.send();

Вместо JSON с информацией о репозитории из GitHub я получаю следующее:

{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}

Редактировать: я смог получить первую страницу, но я хотел бы продолжать перебирать страницы.Я не понимаю документы о том, как это сделать.Пока мой код такой:

<script type="text/javascript">
    const xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function () {
        if(xhr.readyState == 4)
        {
            if(xhr.status == 200)
            {
                console.log("Something went right!");
                var json_results = JSON.parse(xhr.responseText);
                json_length = Object.keys(json_results).length
                var str = "";
                for(var i = 0; i < json_length; i++)
                {
                    str += JSON.stringify(json_results[i].description) + "\n";
                }
                document.getElementById('api-content').textContent = str;
            }
            else if(xhr.status == 404)
            {
                console.log("404 NOT FOUND!");
            }
            else
            {
                console.log("Something went wrong!");
            }
        }
    };

    xhr.open("get", "https://api.github.com/repositories", true);
    xhr.send();
</script>

Ответы [ 3 ]

2 голосов
/ 27 июня 2019

Попробуйте это:

function reqListener (response) {
    console.log(response);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "https://api.github.com/repositories");
oReq.send();

Пожалуйста, обратитесь к документации для правильного использования Github API.

2 голосов
/ 27 июня 2019

XMLHttpRequest get отлично работает здесь, это URL, по которому вы делаете запрос.Проверьте github api docs, чтобы получить ссылку и параметры, необходимые для того, что вам нужно.

https://developer.github.com/v3/

0 голосов
/ 27 июня 2019

Отправка запроса GET на https://api.github.com/ НЕ дает вам результата: a JSON with Repository information from GitHub. Вы получите страницу с JSON URL-адресов соответствующих страниц / информации.

Решение:

Вместо JSON с информацией о репозитории из GitHub я получаю следующее:

{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}

Решите, какую "информацию о хранилище" вы хотите получить, и получите ее по указанным выше (JSON) URL-адресам.

Например: (если пользователь Github: VCone )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...