In diesem Artikel werden 6 verschiedene Methoden zum Initiieren von HTTP-Anfragen in NodeJS vorgestellt. Hier vervollständigen wir die Verwendung掘金社区的板块分类接口
, um die erhaltenen Daten klarer auszudrucken , wir müssen chalk库
im Voraus installieren, um den gedruckten Daten Farbe hinzuzufügen. Okay, wir fangen gleich an~
Node.js wird mit dem https-Modul in der Standardbibliothek geliefert, Sie müssen es also nicht tun Ich brauche es überhaupt. Führen Sie eine beliebige Bibliothek ein, um Anforderungen zu initiieren, da node.js sie selbst abschließen kann und mehr als ausreicht, um einige einfache Datenanforderungen zu verarbeiten.
const chalk = require("chalk") const https = require('https') https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => { let list = []; res.on('data', chunk => { list.push(chunk); }); res.on('end', () => { const { data } = JSON.parse(Buffer.concat(list).toString()); data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }); }).on('error', err => { console.log('Fehler: ', err.message); });
Die Struktur ist etwas kompliziert, da wir eine leere Array-Liste erstellen müssen, um den Anforderungsdatenblock zu speichern. Nachdem die Anforderung abgeschlossen ist, müssen wir die Daten über Buffer verarbeiten und sie dann in das JSON-Format analysieren .
glaubt, dass Front-End-Freunde mit Axios vertraut sind, einer sehr beliebten und beliebten Promise-Anfragebibliothek. Es kann sowohl im Browser als auch auf dem Client verwendet werden und verfügt, wie wir alle wissen, auch über sehr praktische Funktionen wie Interceptors und automatische Datenkonvertierung in JSON.
Wir können den folgenden Befehl verwenden, um Axios zu installieren:
npm i -S axios
Hier ist ein einfaches Beispiel dafür, wie wir die Nuggets-Abschnittsklassifizierung durch Axios erhalten:
const chalk = require("chalk") const axios = require('axios'); axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => { const {data} = res.data data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Fehler: ', err.message); });
Hier verwendet Axios direkt die Get-Anfrage, um die Schnittstelle anzufordern. Die Struktur kann auch in Form eines Versprechens vorliegen, und die Daten werden für Sie automatisch in JSON analysiert, was als sehr einfach und bequem bezeichnet werden kann.
behauptet, es sei „eine benutzerfreundliche und leistungsstarke Node.js-HTTP-Anforderungsbibliothek“. Die Benutzerfreundlichkeit liegt in der Verwendung der API im Promise-Stil und der JOSN-Verarbeitungskonfiguration sowie in einigen Bereichen wie HTTP2-Unterstützung, Paging-API und RFC-Caching und andere Funktionen sind in den meisten Anforderungsbibliotheken nicht verfügbar.
Wir können den folgenden Befehl verwenden, um got zu installieren:
npm i -S [email protected]
Hier ist ein einfaches Beispiel dafür, wie wir die Nuggets-Abschnittsklassifizierung durch got erhalten:
const chalk = require("chalk") const got = require('got'); got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', { Antworttyp: 'json' }) .then(res => { const {data} = res.body data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Fehler: ', err.message); });
Hier müssen wir zuerst die Anforderungsschnittstelle mit {responseType: 'json'}
konfigurieren, und dann können die zurückgegebenen Daten im Hauptteil abgerufen werden, was ebenfalls sehr einfach zu verwenden ist.
Needle ist eine relativ einfache und kompakte Anforderungsbibliothek. Sie kann in Form einer Promise- oder Callback-Funktion ausgewählt werden. Darüber hinaus wird der Rückgabewert automatisch in XML und JSON konvertiert . der Bequemlichkeit.
Wir können den folgenden Befehl verwenden, um Needle zu installieren:
npm i -S Needle
Hier ist ein einfaches Beispiel dafür, wie wir die Nuggets-Abschnittsklassifizierung durch Needle erhalten:
const chalk = require("chalk") const Needle = require('needle'); Needle.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => { if (err) return console.log('Error: ', err.message); const {data} = res.body data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) })
Hier zeigen wir, dass err und res zurückgegeben werden. Bei Erfolg ist err die angeforderten Daten. Gutes JSON-Format.
Wenn Sie Promise verwenden möchten, können Sie so schreiben:
Needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(function(res) { // ... }) .catch(function(err) { // ... });
-Anforderungsbibliothek Superagent wurde recht früh veröffentlicht und stammt aus dem Jahr 2011. Es handelt sich jedoch um eine progressive Client-HTTP-Anforderungsbibliothek, die viele erweiterte HTTP-Client-Funktionen mit dem Node.js-Modul mit derselben API unterstützt.
Wir können den folgenden Befehl verwenden, um Superagent zu installieren:
npm i -S superagent
Hier ist ein einfaches Beispiel dafür, wie wir die Nuggets-Abschnittsklassifizierung durch Superagent erhalten:
const chalk = require("chalk") const superagent = require('superagent'); superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => { const { data } = JSON.parse(res.text) data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Fehler: ', err.message); });
Die aktuelle Verwendung von Superagenten ist der von Axios sehr ähnlich, Sie müssen die Daten jedoch selbst in das JSON-Format verarbeiten.
um eine Anforderungsbibliothek, deren API mit window.fetch konsistent ist und ebenfalls auf Versprechen basiert. Es war in letzter Zeit sehr beliebt, aber das größte Problem besteht möglicherweise darin, dass es einen großen Unterschied zwischen den Versionen v2 und v3 gibt. v2 behält den CJS-Standard bei, während V3 die EJS-Methode verwendet, was nach dem Upgrade zu Problemen führen kann Um diesen Standard zu vereinheitlichen, wird hier Version 2.6.7 als Demonstrationsversion verwendet.
Wir können den folgenden Befehl verwenden, um Node-Fetch zu installieren:
npm i -S [email protected]
Hier ist ein einfaches Beispiel dafür, wie wir die Nuggets-Abschnittsklassifizierung durch Node-Fetch erhalten:
const chalk = require("chalk") const fetch = require("node-fetch") fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', { Methode: 'GET' }) .then(async res => { let { data } = waiting res.json() data.forEach(item => { console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Fehler: ', err.message); });
Es ist ersichtlich, dass es genauso verwendet wird wie window.fetch, ohne Lerndruck.
das Download-Trenddiagramm dieser Anforderungsbibliotheken im vergangenen Jahr an:
Jetzt können wir sehen, dass Node-Fetch im Hinblick auf die Downloads im vergangenen Jahr am beliebtesten und am wenigsten beliebt war.
Sterne | Version | Entpackt Größe | Erstellt Jahre | |
---|---|---|---|---|
axios | 91.642 | 0.26.1 | 398 kB | 2014 |
got | 10.736 | 12.0.1 | 244 kB | 2014 |
Needle | 1.446 | 3.0.0 | 227 kB | 2012 |
Superagent | 15.928 | 7.1.1 | 581 kB | 2011 |
Node-Fetch | 7 | , 4343.2.3 | 106 kB | 2015Hier |
Nachdem wir einige andere Daten dieser Bibliotheken gezählt haben, kann man sagen, dass die Anzahl der Axios-Sterne beispiellos ist und die mehrerer anderer Bibliotheken bei weitem übersteigt.
Diese Anforderungsbibliotheken machen alle das Gleiche und können HTTP-Anfragen initiieren. Vielleicht sind die Schreibmethoden etwas anders, aber alle Wege führen nach Rom. Persönlich kann es daran liegen, dass ich oft auf der Browserseite schreibe und daher ein treuer Axios-Benutzer bin. Egal, ob ich Axios übe oder entwickle, es ist natürlich auch meine erste Wahl Achtung, und das Paket ist auch sehr klein. Es wird häufig in der Praxis verwendet, aber die API ist immer noch nicht so bequem zu verwenden wie Axios.
Tatsächlich gibt es zwei berühmte HTTP-Anforderungsbibliotheken, die in diesem Artikel nicht erwähnt werden:
Eine davon ist ky.js, eine sehr kleine und leistungsstarke Anforderungsbibliothek im Abrufstil. Sie wurde hauptsächlich für Deno- und moderne Browser entwickelt, daher werde ich nicht teilnehmen Darin können interessierte Studierende vorerst selbst diskutieren.
Das andere ist request.js. Der Grund, warum es nicht erwähnt wird, ist, dass es im Jahr 2020 vollständig veraltet ist. Wenn Sie es verwendet haben, können Sie die Anfrage im Projekt durch andere Methoden ersetzen.
Dieser Artikel wurde reproduziert von: https://juejin.cn/post/7074749427637813284
Autor: jsmask