Node.jsは、開発者がブラウザの外でJavaScriptコードを実行できる、強力で人気のある実行環境だ。Web開発における一般的なタスクの1つは、外部APIとやり取りしたり、サーバからデータを取得したりするためのHTTPリクエストを行うことです。この記事では、インターネット上でデータを送受信するプロセスを簡素化する組み込み機能であるFetch APIを使用して、Node.jsでHTTPリクエストを行う方法を探ります。
Node.jsとは?
Node.jsは、ChromeのV8 JavaScriptエンジン上に構築されたオープンソースのクロスプラットフォームJavaScriptランタイムです。Node.jsは、開発者がサーバーサイドでJavaScriptコードを実行することを可能にし、サーバーサイドの操作を処理するためのさまざまな機能とモジュールを提供します。Node.jsを使用することで、開発者はスケーラブルで高性能なアプリケーションを構築することができます。
HTTPリクエストを理解する
HTTP(Hypertext Transfer Protocol)は、インターネット上のデータ通信の基礎である。クライアント(ウェブ・ブラウザなど)がサーバーにリソースをリクエストし、レスポンスを受け取ることができる。HTTPリクエストには、GET(データの取得)、POST(データの送信)、PUT(データの更新)、DELETE(データの削除)など、さまざまな種類があります。
Fetch API
Fetch APIは、非同期ネットワークリクエストを簡素化する最新のJavaScript機能です。グローバルな fetch() メソッドを提供し、Promises を使って HTTP リクエストを開始し、レスポンスを処理することができます。さまざまなタイプのリクエストにFetch APIを使う方法を探ってみましょう。
GETリクエストを行う
GETリクエストを行うには、データを取得したいURLを指定する必要があります。fetch() 関数は、Response オブジェクトを解決する Promise を返します。
対応
リクエストを行い、レスポンスを受け取ったら、レスポンスオブジェクトからデータを取り出すことができます。また、さまざまなレスポンス・ステータスやエラーを処理することもできます。
POSTリクエストの作成
POSTリクエストを使用してサーバーにデータを送信することは、一般的な要件です。Fetch APIを使用すると、JSONまたはURLエンコードされたデータとしてデータを送信できます。
エラー処理
エラーを適切に処理することは、どのようなアプリケーションにおいても不可欠です。Fetch APIを使えば、ネットワーク関連のエラーをキャッチし、それを優雅に処理することができます。
依存関係のインストール
先に進む前に、お使いのシステムにNode.jsがインストールされていることを確認してください。Node.jsの公式ウェブサイト(https://nodejs.org/)からダウンロードできます。Fetch APIはNode.jsにバンドルされているので、追加のパッケージをインストールする必要はありません。
Node.jsプロジェクトの作成
始めるには、プロジェクト用に新しいディレクトリを作成し、npm initを使ってNode.jsプロジェクトとして初期化する。
HTTPリクエストコードを書く
では、Node.jsでFetch APIを使ってHTTPリクエストを行う実際のコードを書いてみよう。
Fetch APIのインポート
Node, Fetch APIを使用する前に、Node.jsアプリケーションでそれを必要とする必要があります。
GETリクエストを行う
fetch() 関数を使用して GET リクエストを行い、特定の URL からデータを取得します。
対応
fetch() 関数から返されたレスポンス・オブジェクトから、必要なデータを抽出します。
POSTリクエストの作成
Fetch APIを使ってPOSTリクエストでデータをサーバーに送信する。
エラー処理
リクエスト処理中に発生するかもしれない問題に対処するために、エラー処理を実装する。
Node.jsアプリケーションの実行
HTTPリクエスト・コードの準備ができたら、Node.jsアプリケーションを実行し、HTTPリクエストの結果を見ることができます。
結論
この記事では、Fetch APIを使ってNode.jsでHTTPリクエストを行う方法を学んだ。GET や POST を含む様々なタイプのリクエストについて調べ、レスポンスやエラーをどのように扱うかを見てきました。Node.jsとFetch APIを組み合わせることで、APIと対話し、サーバからデータを取得するための堅牢なソリューションを提供します。