Fetch API
ブラウザで動く JavaScript から HTTP リクエストを発行する
これまで、ブラウザがサーバーに対してリクエストを送信するのは、リンクがクリックされたときや、フォームが送信されたときなど、ページの再読み込みが起こる場合のみでした。
しかしながら、ブラウザ上で動く JavaScript から利用できる Fetch API を用いると、任意のタイミングでリクエストが発行できるようになります。API は、アプリケーションプログラミングインターフェース(Application Programming Interface)の略で、あるソフトウェアの機能や管理するデータを、外部の他のソフトウェアで利用するための手順やデータ形式を定めた規約のことです。多くのソフトウェアが共通して利用する機能がまとめて提供されており、API に従い短いコードを記述するだけでその機能を利用することができます。
サーバーとクライアント、どちらで動く JavaScript なのかに注意しながら、次のプログラムを実行してみましょう。
static/index.html の body 内
<button id="fetch-button">天気予報を見る</button>
static/script.js (ブラウザ上で動く JavaScript)
document.getElementById("fetch-button").onclick = async () => {
const response = await fetch("/weather");
const weather = await response.text();
alert(weather);
};
async () => {}
は、非同期関数、つまり async
キーワードのついた関数を生成するためのアロー関数式です。
fetch
関数は、リクエストを発行するための関数です。標準ではGET リクエストが発行されます。この関数の戻り値に await 演算子
を適用すると、発行したリクエストに対する Response
クラスのインスタンスが得られます。fetch
関数を利用することで、ページの再読み込みを伴わず、関数が実行されるタイミングでリクエストを発行することができます。
Response#text
メソッドは、レスポンスボディ全体を文字列として読み込むための