ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js の Request モジュールを使用して HTTP プロトコル リクエストを処理する方法に関する基本チュートリアル

Node.js の Request モジュールを使用して HTTP プロトコル リクエストを処理する方法に関する基本チュートリアル

高洛峰
高洛峰オリジナル
2016-12-26 09:47:591247ブラウズ

ここでは、Node.js モジュール - リクエストを紹介します。このモジュールを使用すると、http リクエストが非常にシンプルになります。

Node.js の Request モジュールを使用して HTTP プロトコル リクエストを処理する方法に関する基本チュートリアル

リクエストは非常に使いやすく、https とリダイレクトをサポートしています。

var request = require('request');
request('http://www.google.com', function (error, response, body) {
 if (!error && response.statusCode == 200) {
 console.log(body) // 打印google首页
}
})

ストリーミング:

あらゆる応答をファイルストリームに出力できます。

ストリーミング:

あらゆる応答をファイルストリームに出力できます。

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))

次に、ファイルを PUT または POST リクエストに渡すこともできます。ヘッダーが指定されていない場合は、ファイル拡張子が検出され、対応するコンテンツ タイプが PUT リクエストに設定されます。

fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))
リクエストはそれ自体にパイプすることもできます。この場合、元の content-type と content-length は保持されます。

request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))
フォーム:

リクエストはアプリケーションをサポートします/x-www-form-urlencoded および multipart/form-data はフォームのアップロードを実装します。

x-www-form-urlencoded は非常に簡単です:

request.post('http://service.com/upload', {form:{key:'value'}})

または:

request.post('http://service.com/upload').form({key:'value'})

multipart/form-data を使用すると、ヘッダーの設定などの些細なことを心配する必要はありません、リクエストが解決に役立ちます。

var r = request.post('http://service.com/upload')
var form = r.form()
form.append('my_field', 'my_value')
form.append('my_buffer', new Buffer([1, 2, 3]))
form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png'))
form.append('remote_file', request('http://google.com/doodle.png'))

HTTP 認証:

request.get('http://some.server.com/').auth('username', 'password', false);

または

request.get('http://some.server.com/', {
 'auth': {
 'user': 'username',
 'pass': 'password',
 'sendImmediately': false
}
});

sendImmediately、デフォルトは true、基本認証ヘッダーを送信します。 false に設定すると、401 を受信したときに再試行されます (サーバーの 401 応答には、指定された認証方法 WWW-Authenticate が含まれている必要があります)。

sendImmediately が true の場合、ダイジェスト認証をサポートします。

OAuth ログイン:

// Twitter OAuth
var qs = require('querystring')
 , oauth =
 { callback: 'http://mysite.com/callback/'
 , consumer_key: CONSUMER_KEY
 , consumer_secret: CONSUMER_SECRET
}
 , url = 'https://api.twitter.com/oauth/request_token'
;
request.post({url:url, oauth:oauth}, function (e, r, body) {
 // Ideally, you would take the body in the response
 // and construct a URL that a user clicks on (like a sign in button).
 // The verifier is only available in the response after a user has
 // verified with twitter that they are authorizing your app.
 var access_token = qs.parse(body)
 , oauth =
 { consumer_key: CONSUMER_KEY
 , consumer_secret: CONSUMER_SECRET
 , token: access_token.oauth_token
 , verifier: access_token.oauth_verifier
}
 , url = 'https://api.twitter.com/oauth/access_token'
;
 request.post({url:url, oauth:oauth}, function (e, r, body) {
 var perm_token = qs.parse(body)
 , oauth =
 { consumer_key: CONSUMER_KEY
 , consumer_secret: CONSUMER_SECRET
 , token: perm_token.oauth_token
 , token_secret: perm_token.oauth_token_secret
}
 , url = 'https://api.twitter.com/1/users/show.json?'
 , params =
 { screen_name: perm_token.screen_name
 , user_id: perm_token.user_id
}
;
 url += qs.stringify(params)
 request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {
console.log(user)
})
})
})

カスタマイズされた HTTP ヘッダー

User-Agent はオプション オブジェクトで設定できます。次の例では、github API を呼び出して、特定のウェアハウスのコレクション番号と派生番号を調べます。カスタマイズされたユーザー エージェントと https.

var request = require('request');
 
var options = {
 url: 'https://api.github.com/repos/mikeal/request',
 headers: {
 'User-Agent': 'request'
}
};
 
function callback(error, response, body) {
 if (!error && response.statusCode == 200) {
 var info = JSON.parse(body);
 console.log(info.stargazers_count +"Stars");
 console.log(info.forks_count +"Forks");
}
}
 
request(options, callback);

cookie:

デフォルトでは、cookie は無効になっています。デフォルトまたはオプションで jar を true に設定すると、後続のリクエストで Cookie が使用されます。

var request = request.defaults({jar: true})
request('http://www.google.com', function () {
request('http://images.google.com')
})

または

var j = request.jar()
var request = request.defaults({jar:j})
request('http://www.google.com', function () {
request('http://images.google.com')
})

setCookie には少なくとも 3 つのパラメータが必要であり、最後のパラメータはコールバック関数であることに注意してください。

リクエストパイプメソッドを使用すると、画像のファイルストリームを簡単に取得できます

var j = request.jar()
var cookie = request.cookie('your_cookie_here')
j.setCookie(cookie, uri, function (err, cookie){})
request({url: 'http://www.google.com', jar: j}, function () {
request('http://images.google.com')
})

その他の使用方法と手順については、ここをクリックして読み続けてください: https://github.com/mikeal/request /

これは、Qunar.com からホテルのクエリ データを取得する非常に簡単な例です (一定期間内のホテルの各部屋タイプの価格ランキングを取得します):

var request = require('request'),
fs = require('fs');
 
request('https://www.google.com.hk/images/srpr/logo3w.png').pipe(fs.createWriteStream('doodle.png'));

この例は、ホテル ビジネスに携わっている友人が、自分の Web サイトで顧客に提供する価格の競争力を知りたいと考えています:

1 提供された価格が低すぎると、利益が少なくなります。価格が最も低い場合は、2 番目に低い価格を確認して、調整するかどうかを決定する必要があります。2. 提供された価格が高すぎると、検索ランキングの結果が相対的に低くなり、顧客が存在しなくなります。ホテルを予約すれば、ビジネスはなくなってしまいます

私たちは、例えば2,000以上のホテルなど、多くのホテル予約ビジネスを行っているため、手作業による1つ1つのランキングのチェックに頼っていると、より受動的になってしまいます。拡張するのは難しいため、私は彼のニーズを分析し、優れたリアルタイム警告システムを作成することが可能でした (もちろん、データは 5 ~ 10 分ごとにページ上で自動的に更新されます)。この方法によってのみ、利益を最大化し、営業部門と顧客部門の作業効率を向上させ、ホテルの協力数と会社の人員拡大を加速することができます。取引を行う;

2. 提供された価格が低すぎる場合、または高すぎる場合は、価格を直接変更するためのプラットフォームの API インターフェイスの呼び出しをサポートする必要があります。競合他社の価格調整戦略の変更を分析するための分析レポートを自動的に生成します。

Node.js のその他のリクエスト HTTP プロトコル リクエストを処理するモジュールの基本的な使用方法のチュートリアルに関する関連記事については、PHP 中国語 Web サイトに注目してください。

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