【Node.js】HTTPクライアントの概要
3つのクラス
HTTPクライアントを実装する際には次の3つのクラスについて理解することが必要
http.ClientRequest
- HTTPクライアントからHTTPサーバへ送信リクエストヘッダ及びボディを扱うクラス
http.ClientResponse
- HTTPクライアントがHTTPサーバから受信したレスポンスヘッダ及びボディを扱うクラス
http.Agent HTTPクライアントとHTTPサーバ間のsocket接続を管理し、複数のリクエストオブジェクトをsocketに割り当てる役割を担うクラス
サンプルコード
var http = require('http'); var options ={ host : 'localhost', port : 1337, path : '/', method : 'POST' }; var req = http.request(options, function(res) { var data = ''; res.on('data', function(chunk) { data += chunk; }); res.on('end', function() { console.log('data is ' + data); }); }); var msg = 'Hello from HTTP Client Request'; req.setHeader('Content-Length', Buffer.byteLength(msg)); req.write(msg); req.end();
サンプルコードの解説
http.request()でhttp.ClientRequestクラスのオブジェクトreqを作成する
- 引数にresponseイベントのリスナを指定する(無名関数をサンプルコードでは渡している)
- リスナでは、サーバからのレスポンスを受けるhttp.ClientResponseクラスのオブジェクトのresが引数として渡る
そのボディデータをdataイベントで逐次受信して変数に格納し、endイベントでデータを出力する
- 生成したreqオブジェクトに対してはPOSTするサイズを表すContent-Lengthヘッダを追加してデータを書き込む
- req.end()を行うことでglobalAgentの送信管理下による処理が行われる
参考
サーバサイドJavaScript Node.js入門 (アスキー書籍)
- 作者: 清水俊博,大津繁樹,小林秀和,佐々木庸平,篠崎祐輔,高木敦也,西山雄也,Jxck
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/02/27
- メディア: Kindle版
- この商品を含むブログを見る