読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

Node.jsで同期処理でHTTPリクエストを実行してページを取得する。

sync-requestを利用する。

使い方

1.第一引数にリクエストのタイプを指定する

GETとPOSTを指定することができる。

2.リクエスト先のURLを第二引数に指定する。

3.リクエストを実行する。

するとこのようなオブジェクトが帰ってくる。

> xml

結果


Response {

  statusCode: 404,

  headers: 

   { date: 'Tue, 11 Oct 2016 07:30:24 GMT',

     server: 'Plack::Handler::Starlet',

     vary: 'User-Agent,Accept-Encoding',

     'x-framework': 'JP/4.01',

     'content-type': 'text/html',

     'set-cookie': [ 'ldblog_u=103.5.140.171.1476171024077339; path=/; expires=Mon, 09-Jan-17 07:30:24 GMT' ],

     p3p: 'CP="BUS OUR PHY STP ADM CUR DEV PSA PSD"',

     connection: 'close',

     'transfer-encoding': 'chunked' },

  body: <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 6a 61 22 3e 0a 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 20 63 68 61 72 ... >,

statusCode

これは重要な箇所で、もしエラーが発生した場合は400番台か500番台のコードが帰ってくる。 エラー処理を行うにはここの数字を参照して適切な処理を行うように設定する。

let res = request("GET","http://example.com");

if(res.statusCode >= 400){
//エラー処理
}else{
//リクエストが成功した時の処理
}

body

指定したURLに対応するHTMLファイルが格納されている。つまりウェブサイトの中身はここにある。直接取得しても構わないがgetBody()で取得するのが一般的である。バイナリ形式で格納されているので人間にわかるようにするにはtoString()で文字列化すればよい。

let res = request("GET","http://example.com");
let content = res.getBody().toString(); //ここにHTMLがある。