https://d226lax1qjow5r.cloudfront.net/blog/blogposts/5-ways-to-make-http-requests-in-node-js/http_requests_node_js.png

Node.jsでHTTPリクエストを行う5つの方法

最終更新日 October 23, 2023

所要時間:3 分

はじめに

Node.jsでHTTPリクエストを行う方法を学ぶことは、何十ものライブラリが利用可能で、それぞれのソリューションが最後のものよりも効率的であると主張しているため、圧倒されるように感じるかもしれません。クロスプラットフォームのサポートを提供するライブラリもあれば、バンドルサイズや開発者の経験に重点を置くライブラリもあります。

この投稿では、Node.jsでHTTPリクエストを行う最も一般的な5つの方法を、それぞれの方法についてステップバイステップで説明します。

最初に、標準ライブラリを使ったHTTPリクエストとHTTPSリクエストについて説明する。その後、Node Fetch、Axios、SuperAgentといった代替ライブラリの使い方を紹介する。

前提条件

作業を始める前に、以下のことを確認してください:

Node.jsでHTTPリクエストを行う方法(5つの方法)

以下では、Node.jsで以下の5つのメソッドを使ってHTTPリクエストを行う方法を紹介する:

  1. 標準ライブラリ(HTTPモジュール)

  2. 標準ライブラリ(HTTPSモジュール)

  3. アクシオス

  4. ノードフェッチ

  5. スーパーエージェント

1.標準ライブラリ(HTTPモジュール)

Node.jsの標準ライブラリには、デフォルトの httpモジュールを備えています。このモジュールは、外部パッケージを追加することなくHTTPリクエストを行うことができる。しかし、このモジュールは低レベルであるため、もっと開発者に優しいものになるかもしれない。

さらに 非同期ストリームを使う必要がある。HTTPリクエストのasync/await機能は、このライブラリでは使えないからだ。レスポンス・データは手動で解析する必要がある。

通常、HTTPモジュールはセキュアではないので、テストやデモンストレーションの目的で使用します。

以下は GETリクエストの簡単な例です。 httpモジュールを使ってリクエストする簡単な例です:

const http = require('http');

const options = {
  hostname: 'example.com',
  port: 80,
  path: '/',
  method: 'GET',
};

const req = http.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    console.log(data);
  });
});

req.end();

2.標準ライブラリ(HTTPSモジュール)

Node.jsで安全なHTTPSリクエストを行う必要がある場合は、標準ライブラリにも組み込まれている httpsモジュールを使うことができる。使い方は httpモジュールとよく似ていますが、セキュリティが追加されています。以下はその例です:

const https = require('https');

const options = {
  hostname: 'example.com',
  port: 443,
  path: '/',
  method: 'GET',
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    console.log(data);
  });
});

req.end();

3.アクシオス

Axiosは、Node.js 用の一般的な HTTP クライアント・ライブラリで、HTTP リクエストを行うための、よりユーザーフレンドリーで機能豊富な方法を提供します。Axiosは、エラー処理を簡素化し、自動JSON解析やリクエスト/レスポンスインターセプターなどの機能をサポートしているため、多くのHTTPリクエストシナリオに最適です。

ターミナルで以下のコマンドを入力し、npmからAxiosをインストールする:

npm install axios

次のコード・スニペットは、Axiosを使用して以下のリクエストを行う方法を示しています。 GETリクエストを行う方法を示します:

const axios = require('axios');

axios.get('https://example.com')
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });

4.ノードフェッチ

ノード・フェッチは、Node.js 向けに作られた JavaScript ライブラリで、HTTP リクエストを簡素化します。GET、POST、PUT、DELETEリクエストなど、インターネットやサーバーからリソースをフェッチするための簡単でPromiseベースのアプローチを提供します。サーバーサイド・アプリケーション用に設計されており、Fetch APIと互換性があるため、クライアントサイドとサーバーサイドの環境間で簡単にコードを移行できます。

さらに 便利な拡張機能リダイレクト制限、レスポンスサイズ制限、そして トラブルシューティングのための明示的なエラーなどの便利な拡張が Node Fetch で使えることに注意してください。

ターミナルで以下のコマンドを入力し、npmからNode Fetchをインストールする:

npm install node-fetch

次のコード・スニペットは、Node Fetchを使ってリクエストを行う方法を示している:

const fetch = require('node-fetch');

fetch('https://example.com')
  .then((response) => response.text())
  .then((data) => {
    console.log(data);
  })
  .catch((error) => {
    console.error(error);
  });

5.スーパーエージェント

SuperAgentは、プロミスとコールバックスタイルの構文をサポートする、軽量で柔軟なHTTPクライアントである。シンプルで使いやすいことで知られています。

ターミナルで以下のコマンドを入力し、npmからSuperAgentをインストールする:

npm install superagent

以下のコード・スニペットは、SuperAgent を使用してリクエストを行う方法を示しています:

const request = require('superagent');

request.get('https://example.com')
  .then((response) => {
    console.log(response.text);
  })
  .catch((error) => {
    console.error(error);
  });

まとめ

この投稿では、現在Node.jsで最も人気があると考えられているライブラリのいくつかを使ってHTTPリクエスト機能を実現する方法を紹介した。

他の言語にも、HTTPリクエストに取り組むライブラリは無数にある。次はどの言語について書いてほしいですか?お知らせください!ご意見、ご質問は下記までお寄せください。 ツイッターまたは Vonage 開発者コミュニティ Slack.

追加リーディング

シェア:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael Crumpデベロッパー・エクスペリエンス・マネージャー

マイケル・クランプはVonageのデベロッパーエクスペリエンスチームに所属し、コーダー、YouTuber、そして様々な.NETやクラウド/通信開発トピックについて頻繁に講演を行っています。彼は、開発者がそれぞれの利点を分かりやすく理解できるようにすることに情熱を注いでいます。