Node.jsのHTTPモジュールはHTTPに関わるクラス・メソッドを定義している.
HTTPはサーバーとクライアント側に仕事が二分されるが、今回はそのクライアント側について.
リクエストの送信
requestの設定〜送信完了
HTTP.request(options, response_handler) #
HTTPメソッド、送信先URL、ヘッダなどをoptionsで設定.
request()は http.ClientRequest class を返し、この時点ではまだrequest送信が完了していない (始まってはいるのか…?)
ClientRequest.end() でrequestが完了.
bodyを設定する際は end()の前に ClientRequest.write(body) か end(body)
responseの処理
request(options, response_handler) の第二引数で処理を登録.
response_handler(res)は http.IncomingMessage classであるresponseを第一引数として実行される.
responseのイベント
レスポンスは1度に塊として来るのではなく、小分けされて順次来るみたい.
なのでresponse (http.IncomingMessage class) はReadable Streamを実装してる.
トリガーになるイベントは
- response Event: headerを受け取った時
- data Event: Readable StreamのEvent,
- end Event: Readable StreamのEvent,
responseのよく使うプロパティは
- message.headers
- message.statusCode
*message.statusMessage