JavaScriptのfeatch()の使い方について、自分用のメモとしてまとめてみました!
参考になれば幸いです。
目次
【解説】JavaScriptのFetch APIの使い方
fetchは、JavaScriptでHTTPリクエストを送信するためのモダンなAPIのこと。
Promiseを返すのが特徴で、thenやawaitでの処理が可能です。
【解説】JavaScriptのPromise|async/awaitの使い方そんなfetchの使い方について、下記の順に解説していきます。
①:基本的な使い方
②:レスポンスの処理
③:レスポンスデータを取得
④:実際に使ってみた!
順に見ていきましょう。
fetch関数の第一引数にて、アクセスしたいURLを記述します。
ちなみに相対URLでも可能です。
fetch('ここにURLを記述');
続いてURLからのレスポンスに対して処理を行います。
fetchはPromiseを返すため、.thenや.catchをつなげて処理の記述が可能です。
fetch('ここにURLを記述')
.then(response => {
// レスポンスの処理
})
.catch(error => {
// エラーの処理
});
次に取得したレスポンスデータを使用します。
ただ取得したままのデータでは使用できないため、扱える形に変換する必要があるんですよね。
そこで使えるのが主に下記メソッドたち。
メソッド名 | 実行内容 |
---|---|
response.json() | レスポンスを JSONオブジェクトとして取得してパース |
response.text() | レスポンスをテキストとして取得 |
response.blob() | レスポンスをBlobとして取得 |
response.formData() | レスポンスをFormData オブジェクトとして取得 |
response.arrayBuffer() | レスポンスをArrayBufferとして取得 |
試しに「.json」を使ってみて、データを取得後使用してみました。
fetch('ここにURLを記述')
.then(response => {
return response.json(); // JSON形式に変換
})
.then(data => {
console.log(data); // データを使用
})
.catch(error => {
console.error(error);
});
JSON形式に変換されたデータが、「data」という引数に入りコンソールログで出力しているという感じですね。
実際に「Pokemon API」という、ポケモンのデータが公開されてるAPIにて使ってみました。
下記のようにピカチュウのデータが入ってるURLにアクセスして、そのレスポンスデータをJSONにして、その中のnameを出力すると。。
fetch('https://pokeapi.co/api/v2/pokemon/pikachu/')
.then(response => {
return response.json();
})
.then(data => {
console.log(data.name);
})
.catch(error => {
console.error(error);
});
pikachu
「pikachu」とでました!
【解説】JavaScriptのFetch APIのその他の使い方
最後にfetchのその他の使い方について解説していきます。
それがこちら。
・リクエストの設定
・エラーハンドリング
・async/awaitでの書き方
順に見ていきましょう。
fetchの第二引数にて、オプションオブジェクトを渡すことが可能です。
リクエストメソッドやヘッダーを指定できるのが特徴です。
fetch('ここにURLを記述', {
method: 'POST', // メソッドを指定 (GET, POST, PUT, DELETE, etc.)
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your-token',
},
body: JSON.stringify({ title: 'foo', body: 'bar', userId: 1 })
});
response.ok を使って、HTTPレスポンスが成功したかどうかを確認することが可能です。
if (!response.ok) {
throw new Error(`${response.status}`);
}
response.okがtrueになる | ステータスコードが 200~299 の場合 |
response.okがfalseになる | それ以外のステータスコード(例: 404, 500など) |
そもそもfetchはHTTPステータスコードが失敗(404や500)でも、エラーをスローしないとのこと。
そのためレスポンスの成功可否をresponse.okで確認にして、失敗したときにcatchに移します。
下記コードがやり方の例です↓
fetch('ここにURLを記述')
.then(response => {
if (!response.ok) {
throw new Error(`${response.status}`);
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
async/awaitを使うことで、より見やすく書くことが可能です!
async function testFetch() {
try {
const response = await fetch('ここにURLを記述');
const data = await response.json(); // JSON形式に変換
console.log(data); // データを使用
} catch (error) {
console.error(error);
}
}
testFetch();
ちなみにawaitが例外をスローしたときのために、try~catch構文を使います。
エラーによりプログラムが停止するのを防ぐためですね。
【解説】try-catch-finally文の基本的な使い方【JavaScript】【解説】JavaScriptのFetch APIの使い方:まとめ
- fetchはJavaScriptでHTTPリクエストを送信するためのモダンなAPI
- Promiseを返す
- .thenや.catchをつなげて処理の記述が可能
- レスポンスデータをメソッドを使って扱える形に変換
- fetchの第二引数でオプションオブジェクトを渡すことが可能
- response.ok を使いHTTPレスポンスが成功したか確認可能
fetchを使う時はためしてみてね!
ちなみにHTTPリクエストを簡単にfetchより便利に行える「axios」というライブラリもあります↓
【解説】JavaScriptライブラリ「axios」の使い方