Fetch¶
Lataa malli¶
Ohjeet¶
Aloita seuraavilla vaiheilla:
Lataa tämän harjoituksen zip-tiedosto ja pura se tyhjään hakemistoon.
Kopioi harjoituksessa 6.5 (Stackoverflow-tietojen käsittely) palauttamasi tiedosto
functions.js
samaan hakemistoon
Toistaiseksi toiminnot ovat käyttäneet tietoja, jotka on jo toimitettu sinulle erillisenä JavaScript-tiedosto, mutta todellisessa maailmassa tiedot on noudettava joistakin ulkoista palvelua ennen kuin sitä voidaan käyttää.
Tässä harjoituksessa aiot lisätä kaksi uutta funktiota functions.js
tiedosto. Ensimmäinen on yleinen aputoiminto JSON-tietojen hakemiseen
ulkopuolisista palveluista. Toinen toiminto liittyy tarkemmin API-palveluun
käytetään, mutta se hyödyntää ensimmäistä toimintoa noudettaessa tietoja kohteesta
API.
Funktiot ovat:
getJSON(url)
Ottaa yhden parametrin “url”, jonka tyyppi on “string” tai “URL-objekti <https://javascript.info/url>`_
Käyttää window.fetch hakeaksesi tietoja URL-osoitteesta
Jäsentää tiedot JSONiksi ja palauttaa JSONin (teknisesti funktio palauttaa Promisen, joka ratkaisee JSON:n, fetch() palauttaa aina Promisen)
Voit tehdä funktiosta asynkronisen, jos haluat, tai käyttää “fetch” kanssa .then()-käsittelijää, valinta on sinun
VINKKI: lue osio asynkronisesta JavaScriptistä ja kaikki koodiesimerkit huolellisesti…
getStackOverflowData (apiUrl, technologies = null)
Ottaa parametrin “apiUrl”, jonka tyyppi on “string”.
Ottaa toisen parametrin “technologies”, jonka tyyppi on “Array<string>” (Matriisiarvot pitäisi olla “merkkijonoja”). Tämä parametri on valinnainen, ja sen oletusarvo on null.
Jos toinen parametri on annettu eikä se ole tyhjä, sinun tulee rakentaa queryString muotoa “?tech=item1;item2;item3” ja lisää se “apiUrl”-osoitteeseen. Kohteet on erotettava puolipisteellä (“;”). Ole varovainen,
koodaa queryString oikein
: on merkkejä, jotka eivät ole sallittuja URL-osoitteissa.Lue lisää kyselymerkkijonon (kutsutaan myös hakuparametreiksi) luomisesta
Hae tiedot
getJSON(url)
-funktiolla ja palauta JSONJälleen tämä toiminto palauttaa teknisesti lupauksen, joka ratkaisee JSONin
Voit vapaasti tehdä funktiosta asynkronisen, jos haluat tai käyttää .then().
getJSON(url)
palauttaman lupauksen käyttöliittymä Jälleen valinta on sinun.
Älä nimeä toimintoja uudelleen, muuten testit eivät pysty havaitsemaan ja käyttämään niitä.
Sinun tarvitsee vain palauttaa functions.js
-tiedosto.
Avaa index.html
selaimessasi. Jos toiminnot on toteutettu oikein.
Sinun pitäisi nähdä tutun näköinen menu ja taulukko ja sinun pitäisi pystyä valitsemaan
eri teknologiat ja eri vuodet ja kaiken pitäisi toimia kuten ennen
aikaisemmassa harjoituksessa Pinon ylivuototietojen käsittely
Voit käyttää API:amme (https://tie-lukioplus.rd.tuni.fi/cais/api/stackoverflow/stats) <https://tie-lukioplus.rd.tuni.fi/cais/api/stackoverflow/ tilastot>`_ testataksesi toimintaasi. Samaa APIa käytetään myös tehtävässä.
Sinun tulee tutustua julkaisun materiaaliin ja viittauksiin osion asynkronisesta JavaScriptistä mutta tässä muutama linkki lisää, joista voi olla apua:
Attention
Jos lähetystäsi ei hyväksytä, tässä on muutamia vinkkejä toimintojesi testaamiseen.
Avaa index.html selaimessa. Varmista, että toimintosi löytyy ikkunasta avaamalla JavaScript konsoli ja kirjoitus:
getJSON("https://tie-lukioplus.rd.tuni.fi/cais/api/stackoverflow/stats")
Palautusarvon tulee olla:
Promise {<pending>}
Jos edellinen vaihe näytti hyvältä, yritä kirjoittaa:
getJSON("https://tie-lukioplus.rd.tuni.fi/cais/api/stackoverflow/stats").then((data) => console.log(data))
Aluksi sinun pitäisi saada palautusarvo Promise {<pending>}
.
Jonkin ajan kuluttua tämän pitäisi muuttua seuraavankaltaiseksi arvoksi:
Object { 2011: {…}, 2012: {…}, 2013: {…}, etc etc }
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.