← Nivå 5 – Uppfinnare

Lektion 2 av 8 ⏱ 30 minuter Premium

Din första fetch

Anropa ett API direkt från JavaScript och skriv ut svaret på din sida.

Jag visar: fetch – beställa med kod

I förra lektionen öppnade du ett API i webbläsaren för hand. Nu gör din JavaScript samma sak – med kommandot fetch:

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);

Vad som händer här, rad för rad:

  1. fetch(adresa) – skicka förfrågan (servitören går till köket).
  2. awaitvänta tills den kommer tillbaka. Internet tar en stund!
  3. odpoved.json() – gör om svaret till ett JavaScript-objekt.
  4. Sedan jobbar du med datan som vilket vanligt objekt som helst: punkt, punkt, klart.
⚠️

await funkar bara inuti en funktion märkt async, eller i ett <script type="module">. Om webbläsaren visar felet “await is only valid in async functions”, slå in din kod så här:

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

Skriv ut datan på sidan

Konsolen är för programmerare – en besökare vill se datan på sidan:

<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>

Bekant från Trollkarlen (querySelector, textContent) plus det nya fetch. Inget mer.

Nu är det din tur 💪

  1. Lägg till ett stycke med id="teplota" och scriptet ovan på din webbplats.
  2. Ändra koordinaterna till din egen stad.
  3. Lägg till vindhastigheten i visningen också (data.current_weather.windspeed).
  4. Bonus: när temperaturen är under 0, lägg till ”🥶 Bundle up!” i texten.

Kolla: Den riktiga aktuella temperaturen dyker upp på din sida efter att den laddats. Om du stänger av Wi-Fi och uppdaterar sidan stannar den på “Loading…” – bevis på att datan verkligen kommer från internet.

Det här tar du med dig från lektionen