Peame pärima GitHubi kasutaja profiili andmed, näiteks: ID, kasutajanimi, profiili link ja avalike repode arv. Harjutuse käigus õpid tegema asünkroonseid päringuid fetch abil, töötlema vigasid ja kuvama saadud andmed veebilehel dünaamiliselt JavaScripti abil.
Ülesanne: Github konto vaade
Sisse logime sandbox-is ja luuame uue html veebilehe
kirjutame kood
let givenProfile = "";
let profileName = "";
let profileID = "";
let profileLink = "";
let profileRepos = "";
function renderPage() {
document.getElementById("app").innerHTML = `
<div>
<h1>GitHub konto vaade</h1>
<p>Palun sisesta konto nimi:</p>
<input type="text" placeholder="Sisesta github kasutajanimi" />
<div class="content">
<div id="mini">
${
profileName && profileName !== "-"
? `<p>ID: ${profileID}</p>
<p>Profiil: ${profileName}</p>
<a href="${profileLink}" target="_blank">${profileLink}</a>
<p>Repos: ${profileRepos}</p>`
: ""
}
</div>
</div>
</div>
`;
const input = document.querySelector("input");
input.addEventListener("change", (e) => {
updateValue(e);
});
}
function updateValue(e) {
givenProfile = e.target.value.trim();
fetchProfile();
}
async function fetchProfile() {
if (!givenProfile) {
profileName = "";
profileID = "";
profileLink = "";
profileRepos = "";
renderPage();
return;
}
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 || 0;
}
renderPage();
} catch (error) {
profileName = "Error";
profileID = "—";
profileLink = "—";
profileRepos = "—";
renderPage();
}
}
renderPage();

See kood näitab GitHubi kasutajanime ja lehekülje tema andmetega: kasutajanimi, ID, link profiilile ja repositooriumide arv. Kui sellist kasutajat pole või on tekkinud viga, kuvatakse vastav teade.
Kokkuvõtte
- RenderPage() – loob ja uuendab veebilehe sisu
- fetchProfile() – toetab API päringut ja töödeldab vastused
- UpdateValue() – jälgib sisestusvälja muutumusi
Selle projekti kallal töötades õppisin ma GitHub API-st andmeid hankima.