← レベル5 – インベンター

レッスン 2/8 ⏱ 30 分 プレミアム

最初の fetch

JavaScript から API を呼び、レスポンスをページに表示。

見てみよう:fetch——コードで注文

前レッスンでは手でブラウザから API を開いた。今度は JavaScript が同じこと——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);

1行ずつ何が起きてるか:

  1. fetch(adresa) – リクエスト送信(ウェイターが厨房へ)。
  2. await待つ。インターネットは少し時間がかかる!
  3. odpoved.json() – レスポンスを JavaScript オブジェクトに変換。
  4. あとは普通のオブジェクト:data.current_weather.temperature など。
⚠️

awaitasync 付き関数か <script type="module"> の中でのみ動く。“await is only valid in async functions” エラーなら:

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

ページにデータを表示

コンソールはプログラマー用——訪問者はページで見たい:

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

魔法使いで知ってるもの(querySelectortextContent)+ 新しい fetch。それだけ。

やってみよう 💪

  1. id="teplota" の段落と上のスクリプトをサイトに追加。
  2. 座標を自分の街に変更。
  3. 風速 も表示に追加(data.current_weather.windspeed)。
  4. ボーナス:気温が0未満なら「🥶 Bundle up!」をテキストに追加。

確認: 読み込み後、ページに本物の現在気温。Wi-Fi を切って更新すると「Loading…」のまま——データが本当にインターネットから来てる証拠。

このレッスンのまとめ