Maison interface Web js tutoriel Tutoriel de base sur la façon d'utiliser le module Request dans Node.js pour gérer les requêtes du protocole HTTP

Tutoriel de base sur la façon d'utiliser le module Request dans Node.js pour gérer les requêtes du protocole HTTP

Dec 26, 2016 am 09:47 AM

Nous introduisons ici un module Node.js - requête. Avec ce module, les requêtes http deviennent super simples.

Tutoriel de base sur la façon dutiliser le module Request dans Node.js pour gérer les requêtes du protocole HTTP

Request est super simple à utiliser et prend en charge https et la redirection.

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

Flux :

Toute réponse peut être sortie vers un flux de fichiers.

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'))
Copier après la connexion

À votre tour, vous pouvez également transmettre le fichier à une requête PUT ou POST. Si aucun en-tête n'est fourni, l'extension du fichier sera détectée et le type de contenu correspondant sera défini dans la requête PUT.

fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))
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.

request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))
Formulaire :

request prend en charge application/x-www-form-urlencoded et multipart/form-data pour implémenter le téléchargement de formulaire.

x-www-form-urlencoded est simple :

request.post('http://service.com/upload', {form:{key:'value'}})
Copier après la connexion

ou :

request.post('http://service.com/upload').form({key:'value'})
Copier après la connexion

Utilisez multipart/form-data et vous n'aurez pas à vous soucier de questions triviales telles que la configuration des demandes d'en-têtes vous aidera à le résoudre.

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'))
Copier après la connexion

Authentification HTTP :

request.get('http://some.server.com/').auth('username', 'password', false);
Copier après la connexion

ou

request.get('http://some.server.com/', {
 'auth': {
 'user': 'username',
 'pass': 'password',
 'sendImmediately': false
}
});
Copier après la connexion

sendImmédiatement, la valeur par défaut est true, envoie un en-tête d'authentification de base. Après l'avoir défini sur false, il réessayera lors de la réception d'un 401 (la réponse 401 du serveur doit inclure la méthode d'authentification spécifiée par WWW-Authenticate).

L'authentification Digest est prise en charge lorsque sendImmediately est vrai.

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)
})
})
})
Copier après la connexion

En-tête HTTP personnalisé

L'agent utilisateur et autres peuvent être définis dans le objet d'options. Dans l'exemple suivant, nous appelons l'API github pour connaître le numéro de collection et le numéro dérivé d'un certain entrepôt. Nous utilisons un User-Agent personnalisé et https. Définissez jar sur true dans les valeurs par défaut ou les options afin que les requêtes ultérieures utilisent des cookies

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);
Copier après la connexion

En créant une nouvelle instance de request.jar(), vous peut utiliser des cookies personnalisés au lieu de demander le pot de cookies global.

var request = request.defaults({jar: true})
request('http://www.google.com', function () {
request('http://images.google.com')
})
Copier après la connexion

ou

var j = request.jar()
var request = request.defaults({jar:j})
request('http://www.google.com', function () {
request('http://images.google.com')
})
Copier après la connexion

Notez que setCookie nécessite au moins trois Paramètres, le dernier est la fonction de rappel.

Vous pouvez utiliser la méthode du tube de requête pour obtenir facilement le flux de fichiers de l'image

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')
})
Copier après la connexion

Pour plus de méthodes d'utilisation et d'instructions, cliquez ici Continuer la lecture : https://github.com/mikeal/request/

Exemple

var request = require('request'),
fs = require('fs');
 
request('https://www.google.com.hk/images/srpr/logo3w.png').pipe(fs.createWriteStream('doodle.png'));
Copier après la connexion
Un exemple très simple est écrit ici pour récupérer les données de requête d'hôtel de Qunar.com (obtenir le prix classement de chaque type de chambre dans l'hôtel sur une certaine période de temps) :

Cet exemple vient d'un ami qui est dans l'hôtellerie, vous souhaitez connaître la compétitivité des prix que vous proposez aux clients sur votre site Internet :

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~');
});
Copier après la connexion
1. Si le prix que vous proposez est trop bas, vous gagnerez moins d'argent, donc si votre prix est la plus basse, alors vous devez voir quelle est la deuxième valeur la plus basse, puis décider si vous souhaitez l'ajuster

2. Si le prix fourni est trop élevé, les résultats du classement de la recherche seront inférieurs, et il y en aura ; il n'y aura pas de clients pour réserver l'hôtel, et l'entreprise disparaîtra

Parce que nous faisons beaucoup de réservation d'hôtels, par exemple, plus de 2 000 hôtels, si nous nous appuyons sur le manuel. En vérifiant les classements un par un, ce sera plus passif et il sera difficile de l'étendre, donc il en a besoin. J'ai analysé que c'était faisable, et cela peut être transformé en un bon système d'alerte en temps réel (bien sûr le les données seront automatiquement actualisées sur la page toutes les 5 à 10 minutes). Ce n'est qu'ainsi que les profits pourront être maximisés, l'efficacité du travail des services commerciaux et clients être améliorée, et le nombre de coopérations hôtelières et l'expansion du personnel de l'entreprise seront accélérés :

1. Ne perdez pas d'argent et ne le faites pas. effectuer des transactions déficitaires ;

2. Si vous trouvez que le prix fourni est trop bas ou trop élevé, vous devez prendre en charge l'appel de l'interface API de la plateforme pour modifier directement le prix

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

Pour plus d'articles connexes sur le didacticiel d'utilisation de base du module Request dans Node.js pour gérer les requêtes du protocole HTTP ; , veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Mar 18, 2025 pm 03:17 PM

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

TypeScript pour les débutants, partie 2: Types de données de base TypeScript pour les débutants, partie 2: Types de données de base Mar 19, 2025 am 09:10 AM

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript

Comment utiliser efficacement le cadre de collections de Java? Comment utiliser efficacement le cadre de collections de Java? Mar 13, 2025 pm 12:28 PM

Cet article explore une utilisation efficace du cadre de collections de Java. Il met l'accent sur le choix des collections appropriées (liste, set, map, file d'attente) en fonction de la structure des données, des besoins en performances et de la sécurité des threads. Optimisation de l'utilisation de la collection grâce à

Début avec Chart.js: tarte, beignet et graphiques à bulles Début avec Chart.js: tarte, beignet et graphiques à bulles Mar 15, 2025 am 09:19 AM

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

See all articles