H7: GitHub API päring

Avasit CodeSandbox ja avasin JavaScropt projekti, ja kirjutasin kodi mis teeb päringu GitHubi ja näitab valiku infot

let givenProfile = "";
let profileName = "";
let profileId = "";
let profileLink = "";
let profileRepos = "";

function renderPage() {
  document.getElementById("app").innerHTML = `
    <div>
      <h1>Github profile viewer</h1>
      <p>Please enter profile name:</p>
      <input />
      <div class="content">
        <h1 id="name">Name: ${profileName}</h1>
        <p id="id">Id: ${profileId}</p>
        <p id="repos">Public repos: ${profileRepos}</p>
        <p id="profileurl">Link: <a href="${profileLink}" target="_blank">${profileLink}</a></p>
 
      </div>
    </div>
  `;

  const input = document.querySelector("input");
  input.addEventListener("change", updateValue);
}

renderPage();

function updateValue(e) {
  givenProfile = e.target.value;
  fetchProfile();
}

async function fetchProfile() {
  try {
    const response = await fetch(
      `https://api.github.com/users/${givenProfile}`
    );
    const rateLimitRemaining = response.headers.get("X-RateLimit-Remaining");

    if (!response.ok) {
      profileName = "User not found";
      profileId = "";
      profileLink = "";
      profileRepos = "";
    } else {
      const data = await response.json();
      profileName = data.login;
      profileId = data.id;
      profileLink = data.html_url;
      profileRepos = data.public_repos;
    }

    if (rateLimitRemaining === "0") {
      profileName = "API rate limit reached. Try again later.";
      profileId = "";
      profileLink = "";
      profileRepos = "";
    }
  } catch (error) {
    profileName = "Error fetching data";
    profileId = "";
    profileLink = "";
    profileRepos = "";
  }
  renderPage();
}

Kokkuvõtte

  • renderPage() – loob ja uuendab veebilehe sisu
  • updateValue() – jälgib sisestuvälja muutusi
  • fetchProfile() – teostab API päringud ja tõõdeldab vastused

On loodud leht mis teeb päringu GitHubi ja näitab valiku infot (ID, repos number, viit repos)