ホームページ ウェブフロントエンド フロントエンドQ&A Nodejs はリクエストを行うためのクライアントを作成します

Nodejs はリクエストを行うためのクライアントを作成します

May 17, 2023 am 09:32 AM

Node.js は Javascript で書かれたオープンソースのバックエンド ランタイム環境で、開発者はサーバー側で Javascript を使用してスクリプトを作成できます。 Node.js では、組み込みの http モジュールを使用して HTTP サーバーを作成し、クライアントと通信できます。同時に、http モジュールを使用してクライアントを作成し、リクエストを送信することもできます。

この記事では、Node.js を使用してクライアントを作成し、サーバーに HTTP リクエストを送信する方法について説明します。

  1. HTTP クライアントの作成

HTTP クライアントを作成するには、http モジュールの request() メソッドを使用する必要があります。 request() メソッドは、オプションとコールバック関数の 2 つのパラメータを受け取ります。

オプション パラメーターは、リクエストの URL、リクエストのメソッド、リクエスト ヘッダー、リクエスト本文など、リクエストの詳細を指定するために使用されるオブジェクトです。

コールバック関数は、サーバーの応答データを処理するために使用されるコールバック関数です。応答データが利用可能な場合、Node.js は開発者が応答データを処理できるようにこのコールバック関数を自動的に呼び出します。

以下は、Node.js を使用して HTTP クライアントを作成する方法の簡単な例です:

const http = require('http');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

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

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.end();
ログイン後にコピー

上記のコードでは、リクエストの詳細を記述するオプション オブジェクトを作成します。 URL、リクエストメソッド、リクエストヘッダー、リクエストボディなど次に、http.request() メソッドを使用してリクエスト オブジェクト req を作成し、オプション オブジェクトとコールバック関数を渡します。

req が end() メソッドを呼び出すと、リクエストはサーバーに送信されます。 end() メソッドが呼び出される前に、 req.write() メソッドを使用してリクエスト本体データを書き込むことができます。サーバー応答データが利用可能な場合、Node.js はコールバック関数を呼び出し、応答オブジェクト res を渡します。コールバック関数で res.on() メソッドを使用してサーバーの応答を処理し、サーバーがデータ チャンクを送信するときにデータ イベント リスナーを使用できます。サーバーの応答が終了すると、end イベントが発生します。

  1. POST リクエストの送信

上記の例では、GET リクエストを使用しました。 POST リクエストを送信する必要がある場合は、オプション オブジェクトでリクエスト メソッドを POST として指定し、リクエスト本体のデータを構成する必要があります。以下は、POST メソッドを使用して HTTP リクエストを送信する方法の例です。

const http = require('http');

const postData = JSON.stringify({
  'msg': 'Hello World!'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': postData.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

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

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(postData);
req.end();
ログイン後にコピー

上記のコードでは、JSON.stringify() メソッドを使用して、msg 属性を含む JSON オブジェクトを文字列を取得し、値を postData 変数に割り当てます。次に、POST リクエストの詳細を含むオプション オブジェクトを作成し、リクエスト ヘッダーの Content-Length 属性の値として postData の長さを指定します。最後に、req.write() メソッドを使用して postData データを書き込み、次に req.end() メソッドを呼び出してリクエストを送信します。

  1. クライアントがファイルを送信する

場合によっては、ローカル ファイルをサーバーに送信する必要があります。 Node.js では、fs モジュールの createReadStream() メソッドを使用して読み取り可能なストリームを作成し、それをリクエスト オブジェクトに追加できます。 Node.js でファイルを送信する方法の例を次に示します。

const http = require('http');
const fs = require('fs');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'text/plain',
    'Content-Disposition': 'attachment; filename=text.txt'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

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

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

const readStream = fs.createReadStream('/path/to/file.txt');
readStream.pipe(req);

req.end();
ログイン後にコピー

上記のコードでは、リクエストの詳細を記述し、リクエスト メソッドを POST として指定するオプション オブジェクトを作成します。次に、createReadStream() メソッドを使用して読み取り可能なストリームを作成し、その読み取り可能なストリームを Pipe() メソッドを通じてリクエスト オブジェクトに追加します。最後に、req.end() メソッドを使用してリクエストを送信します。

  1. クライアントによる JSON データの送信

Node.js での JSON データの送信は非常に簡単で、JSON オブジェクトを作成してリクエスト本文として送信するだけです。 Node.js で JSON データを送信する方法の例を次に示します。

const http = require('http');

const data = JSON.stringify({
  'firstName': 'John',
  'lastName': 'Doe'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

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

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(data);
req.end();
ログイン後にコピー

上記のコードでは、JSON オブジェクトを作成して文字列に変換し、それをリクエスト本文に書き込んで送信します。サーバー。最後に、req.end() メソッドを使用してリクエストを送信します。

概要

Node.js で HTTP クライアントを作成し、リクエストを送信するのは非常に簡単です。 http モジュールの request() メソッドを使用してリクエスト オブジェクトを作成し、コールバック関数でサーバーの応答を処理できます。 POST リクエストを送信する必要がある場合は、リクエスト メソッドを POST として指定し、リクエスト本体のデータを構成する必要があります。ファイルを送信する必要がある場合は、fs モジュールの createReadStream() メソッドを使用して読み取り可能なストリームを作成し、それをリクエスト オブジェクトに追加する必要があります。 JSON データを送信する必要がある場合は、JSON オブジェクトを文字列に変換し、リクエスト本文に書き込む必要があります。

以上がNodejs はリクエストを行うためのクライアントを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyなロードの概念を説明してください。

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

JavaScriptでカリーはどのように機能し、その利点は何ですか?

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

React和解アルゴリズムはどのように機能しますか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?

イベントハンドラーのデフォルトの動作をどのように防止しますか? イベントハンドラーのデフォルトの動作をどのように防止しますか? Mar 19, 2025 pm 04:10 PM

イベントハンドラーのデフォルトの動作をどのように防止しますか?

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? 制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? Mar 19, 2025 pm 04:16 PM

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか?

See all articles