Node.js は Javascript で書かれたオープンソースのバックエンド ランタイム環境で、開発者はサーバー側で Javascript を使用してスクリプトを作成できます。 Node.js では、組み込みの http モジュールを使用して HTTP サーバーを作成し、クライアントと通信できます。同時に、http モジュールを使用してクライアントを作成し、リクエストを送信することもできます。
この記事では、Node.js を使用してクライアントを作成し、サーバーに 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 イベントが発生します。
上記の例では、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() メソッドを呼び出してリクエストを送信します。
場合によっては、ローカル ファイルをサーバーに送信する必要があります。 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() メソッドを使用してリクエストを送信します。
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 サイトの他の関連記事を参照してください。