← Nivå 5 – Oppfinner

Leksjon 2 av 8 ⏱ 30 minutter Premium

Ditt første fetch

Kall en API direkte fra JavaScript og print svaret på siden din.

Jeg viser deg: fetch – at bestille med kode

I siste leksjon åpnede du en API i nettleseren i hånden. Nu gjør din JavaScript det samme – med fetch-kommandoen:

const adresa = 'https://api.open-meteo.com/v1/forecast?latitude=49.19&longitude=16.61&current_weather=true';

const odpoved = await fetch(adresa);
const data = await odpoved.json();

console.log(data.current_weather.temperature);

Hva der sker her, linje for linje:

  1. fetch(adresa) – send forespørgslen (tjeneren går til køkkenet).
  2. awaitvent på, at den kommer tilbake. Internettet tar et øyeblikk!
  3. odpoved.json() – konverter svaret til et JavaScript-objekt.
  4. Så jobber du med dataene som ethvert vanligt objekt: punktum, punktum, ferdig.
⚠️

await fungerer kun inde i en funktion markeret async, eller i et <script type="module">. Hvis nettleseren viser feilen “await is only valid in async functions”, pak koden din sådan her:

async function nacti() {
  // fetch and await go here
}
nacti();

Konsollen er til programmerere – en besøkende vil se dataene på siden:

<p id="teplota">Loading…</p>

<script type="module">
  const odpoved = await fetch('https://api.open-meteo.com/v1/forecast?latitude=49.19&longitude=16.61&current_weather=true');
  const data = await odpoved.json();

  document.querySelector('#teplota').textContent =
    `Right now it's ${data.current_weather.temperature} °C`;
</script>

Velkendt stof fra Troldmand (querySelector, textContent) plus det nye fetch. Ikke mere.

Nå er det din tur 💪

  1. Legg til et avsnitt med id="teplota" og scriptet ovenfor til din nettside.
  2. Endre koordinaterne til din egen by.
  3. Legg til også vindhastigheden til visningen (data.current_weather.windspeed).
  4. Bonus: når temperaturen er under 0, legg til ”🥶 Bundle up!” til teksten.

Sjekk: Den riktige aktuelle temperatur vises på siden din etter innlasting. Hvis du slår Wi-Fi fra og oppdaterer siden, blir den stående på “Loading…” – bevis på, at dataene virkelig kommer fra internettet.

Dette tar du med deg fra leksjonen