Cet article présente 6 méthodes différentes pour lancer des requêtes HTTP dans nodejs. Nous compléterons ici l'utilisation de chaque méthode différente en sollicitant掘金社区的板块分类接口
à titre de démonstration, bien sûr, afin d'imprimer plus clairement les données obtenues. , nous devons installer chalk库
à l'avance pour ajouter de la couleur aux données imprimées. D'accord, nous sommes sur le point de commencer ~
Node.js est livré avec le module https dans la bibliothèque standard, vous ne le faites donc pas. besoin du tout Introduisez n'importe quelle bibliothèque pour lancer des requêtes, car node.js lui-même peut le compléter, et c'est plus que suffisant pour gérer certaines requêtes de données simples.
const craie = require("craie") const https = exiger('https') https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => { laissez liste = []; res.on('data', chunk => { list.push(morceau); }); res.on('end', () => { const { data } = JSON.parse(Buffer.concat(list).toString()); data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }); }).on('erreur', err => { console.log('Erreur : ', err.message); });
La structure est un peu compliquée, car nous devons créer une liste de tableaux vide pour stocker le morceau de données de la requête, puis une fois la requête terminée, nous devons traiter les données via Buffer, puis les analyser au format json. .
pense que les amis frontaux connaissent axios. Il s'agit d'une bibliothèque de requêtes Promise très populaire et populaire. Il peut être utilisé à la fois sur le navigateur et sur le client et, comme nous le savons tous, il dispose également de fonctions très pratiques telles que des intercepteurs et la conversion automatique des données en json.
Nous pouvons utiliser la commande suivante pour installer axios :
npm i -S axios
Voici un exemple simple de la façon dont nous obtenons la classification de la section Nuggets via axios :
const chalk = require("chalk") const axios = require('axios'); axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => { const {données} = res.données data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(erreur => { console.log('Erreur : ', err.message); });
Ici, axios utilise directement la requête get pour demander l'interface. La structure peut également être sous forme de promesse, et les données sont automatiquement analysées en json pour vous, ce qui peut être considéré comme très simple et pratique.
got prétend être "une bibliothèque de requêtes HTTP Node.js conviviale et puissante". La convivialité réside dans son utilisation de l'API de style Promise et de la configuration de traitement JOSN, ainsi que de certaines fonctionnalités telles que la prise en charge HTTP2, l'API de pagination et la mise en cache RFC. et d'autres fonctionnalités ne sont pas disponibles dans la plupart des bibliothèques de requêtes.
Nous pouvons utiliser la commande suivante pour installer got :
npm i -S [email protected]
Voici un exemple simple de la façon dont nous obtenons la classification de la section Nuggets via got :
const chalk = require("chalk") const obtenu = require('got'); got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', { Type de réponse : 'json' }) .then(res => { const {données} = res.body data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(erreur => { console.log('Erreur : ', err.message); });
Ici, nous devons d'abord configurer l'interface de requête avec {responseType: 'json'}
, puis les données renvoyées peuvent être obtenues dans le corps, qui est également très simple à utiliser.
Needle est une bibliothèque de requêtes relativement simple et compacte. Elle peut prendre la forme d'une promesse ou d'une fonction de rappel. Vous pouvez la choisir selon vos propres habitudes. De plus, sa valeur de retour convertira automatiquement le XML et le JSON, ce qui est également très utile. .de commodité.
Nous pouvons utiliser la commande suivante pour installer Needle :
npm i -S Needle
Voici un exemple simple de la façon dont nous obtenons la classification de la section Nuggets via Needle :
const chalk = require("chalk") const aiguille = require('aiguille'); Needle.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => { if (err) return console.log('Error: ', err.message); const {données} = res.body data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) })
Ici, nous démontrons l'utilisation d'une fonction de rappel. On peut voir qu'il y a des erreurs et des res renvoyés en cas de succès, err est nul. Le corps de la res renvoyé après le succès est les données demandées. Bon format json.
Si vous souhaitez utiliser Promise, vous pouvez écrire comme ceci :
Needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(fonction(res) { //... }) .catch(fonction(erreur) { //... });La bibliothèque de requêtes
superagent a été publiée assez tôt, remontant à 2011, mais il s'agit d'une bibliothèque de requêtes HTTP client progressive qui prend en charge de nombreuses fonctions client HTTP avancées avec le module Node.js avec la même API.
Nous pouvons utiliser la commande suivante pour installer le superagent :
npm i -S superagent
Voici un exemple simple de la façon dont nous obtenons la classification de la section Nuggets via le superagent :
const chalk = require("chalk") const superagent = require('superagent'); superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => { const {données} = JSON.parse(res.text) data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(erreur => { console.log('Erreur : ', err.message); });
L'utilisation actuelle du superagent est très similaire à celle d'axios, mais vous devez traiter vous-même les données au format json.
est une bibliothèque de requêtes dont l'API est cohérente avec window.fetch et est également basée sur des promesses. Il a été très populaire récemment, mais le plus gros problème est peut-être qu'il existe une grande différence entre ses versions v2 et v3. La v2 maintient la norme cjs, tandis que la v3 utilise la méthode ejs, ce qui peut causer des problèmes après la mise à niveau. Afin d'unifier ce standard, la version 2.6.7 est utilisée ici comme version de démonstration.
Nous pouvons utiliser la commande suivante pour installer node-fetch :
npm i -S [email protected]
Voici un exemple simple de la façon dont nous obtenons la classification de la section Nuggets via node-fetch :
const chalk = require("chalk") const fetch = require("node-fetch") fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', { méthode : 'GET' }) .then(résultat asynchrone => { let { data } = attendre res.json() data.forEach(élément => { console.log(`${chalk. Yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(erreur => { console.log('Erreur : ', err.message); });
On peut voir qu'il est utilisé exactement de la même manière que window.fetch, sans aucune pression d'apprentissage.
, jetons un coup d'œil au tableau de tendance des téléchargements de ces bibliothèques de requêtes au cours de l'année écoulée :
Nous pouvons maintenant constater que la récupération de nœuds a été la plus populaire et la moins populaire en termes de téléchargements au cours de l'année écoulée.
Étoiles | Version | Unpacked Taille | Années de création | |
---|---|---|---|---|
axios | 91 642 | 0,26,1 | 398 Ko | 2014 |
obtenu | 10 736 | 12.0.1 | 244 Ko | 2014 |
aiguille | 1 446 | 3.0.0 | 227 Ko | 2012 |
superagent | 15 928 | 7.1.1 | 581 Ko | 2011 |
node-fetch | 7 | , 4343.2.3 | 106 ko | 2015Ici |
Nous Après avoir compté quelques autres données de ces bibliothèques, on peut dire que le nombre d'étoiles d'axios est sans précédent, dépassant de loin celui de plusieurs autres bibliothèques.
Ces bibliothèques de requêtes font toutes la même chose et peuvent initier des requêtes HTTP. Peut-être que les méthodes d'écriture sont légèrement différentes, mais tous les chemins mènent à Rome. Personnellement, c'est peut-être parce que j'écris souvent du côté du navigateur, donc je suis un utilisateur fidèle d'axios. Qu'il s'agisse de pratiquer ou de développer axios, c'est bien sûr mon premier choix. attention, et le package est également très petit. Il est souvent utilisé pendant la pratique, mais l'API n'est toujours pas aussi pratique à utiliser qu'axios.
En fait, il existe deux bibliothèques de requêtes HTTP célèbres qui ne sont pas mentionnées dans cet article :
l'une est ky.js, qui est une très petite et puissante bibliothèque de requêtes de style récupération. Elle est principalement conçue pour les navigateurs deno et modernes, je ne participerai donc pas. pour le moment, les étudiants intéressés peuvent explorer par eux-mêmes.
L'autre est request.js. La raison pour laquelle il n'est pas mentionné est qu'il est complètement obsolète en 2020. Si vous l'avez utilisé, vous pouvez remplacer la requête dans le projet par d'autres méthodes.
Cet article est reproduit à partir de : https://juejin.cn/post/7074749427637813284
Auteur : jsmask