Cet article présente principalement le tutoriel d'utilisation de base du module Request dans Node.js pour traiter les requêtes HTTP prend également en charge les requêtes de signature OAuth, ce qui est très bon et puissant. Les amis qui en ont besoin peuvent s'y référer
<.>Ici Présentation d'un module Node.js - demande. Avec ce module, les requêtes http deviennent super simples.var request = require('request'); request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 打印google首页 } })
Flux :
Toute réponse peut être générée dans un flux de fichiers.request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))
Les requêtes peuvent également être redirigées vers elles-mêmes. Dans ce cas, le type de contenu et la longueur du contenu d'origine seront conservés.
Formulaire :
request.post('http://service.com/upload', {form:{key:'value'}})
request.post('http://service.com/upload').form({key:'value'})
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'))
Authentification HTTP :
request.get('http://some.server.com/').auth('username', 'password', false);
request.get('http://some.server.com/', { 'auth': { 'user': 'username', 'pass': 'password', 'sendImmediately': false } });
Connexion 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) }) }) })
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);
cookies :
Par défaut, les cookies sont désactivé. Définissez jar sur true dans les valeurs par défaut ou les options pour activer les demandes ultérieures d'utilisation de cookiesvar 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') })
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') })
var request = require('request'), fs = require('fs'); request('https://www.google.com.hk/images/srpr/logo3w.png').pipe(fs.createWriteStream('doodle.png'));
Exemple
Un exemple très simple est écrit ici pour explorer la requête Qunar.com Hotel données (obtenir le classement des prix de chaque type de chambre dans l'hôtel sur une certaine période de temps) :var request = require('request'), fs = require('fs'); var reqUrl = 'http://hotel.qunar.com/price/detail.jsp?fromDate=2012-08-18&toDate=2012-08-19&cityurl=shanghai_city&HotelSEQ=shanghai_city_2856&cn=5'; request({uri:reqUrl}, function(err, response, body) { //console.log(response.statusCode); //console.log(response); //如果数据量比较大,就需要对返回的数据根据日期、酒店ID进行存储,如果获取数据进行对比的时候直接读文件 var filePath = __dirname + '/data/data.js'; if (fs.exists(filePath)) { fs.unlinkSync(filePath); console.log('Del file ' + filePath); } fs.writeFile(filePath, body, 'utf8', function(err) { if (err) { throw err; } console.log('Save ' + filePath + ' ok~'); }); console.log('Fetch ' + reqUrl + ' ok~'); });
3. Il existe une fonction pour générer automatiquement des rapports d'analyse pour analyser les stratégies d'ajustement des prix des concurrents
Ce qui précède est l'intégralité du contenu de cet article. à l'étude de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Introduction aux définitions de module dans nodejsApprentissage du module cluster dans NodeComment nodejs implémente le chargement asynchrone bigpipe des pagesCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!