
この記事では、nodejs で HTTP リクエストを開始する 6 つの異なる方法を紹介します。ここでは、取得したデータをより明確に出力するために、掘金社区的板块分类接口をリクエストして、それぞれの異なる方法の使用を完了します。 , 印刷データに色を追加するには、事前にchalk库をインストールする必要があります。さて、これから始めます〜
Node.js には標準ライブラリに https モジュールが付属しているため、インストールする必要はありません。まったく必要ありません リクエストを開始するためのライブラリを導入します。node.js 自体でそれを完了でき、いくつかの単純なデータリクエストを処理するには十分すぎるためです。
const チョーク = require("チョーク")
const https = require('https')
https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => {
let list = [];
res.on('データ', チャンク => {
list.push(チャンク);
});
res.on('終了', () => {
const { データ } = JSON.parse(Buffer.concat(list).toString());
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
});
}).on('エラー', エラー => {
console.log('エラー: ', err.message);
リクエストデータチャンクを保存するために空の配列リストを作成する必要があり、リクエストが完了した後、バッファを通じてデータを処理し、それを JSON 形式に解析する必要があるため、
構造が少し複雑です。 。

、フロントエンドの友人は Axios に精通していると考えており、非常に人気のある Promise リクエスト ライブラリです。ブラウザとクライアントの両方で利用でき、インターセプタやjsonへの自動変換など非常に便利な機能も備えているのはご存知の通りです。
次のコマンドを使用して axios をインストールできます:
npm i -S axios
以下は、axios を通じて Nuggets セクション分類を取得する方法の簡単な例です:
const chalk = require("chalk")
const axios = require('axios');
axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs')
.then(res => {
const {データ} = res.data
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('エラー: ', err.message);
ここで、
axios は get リクエストを直接使用してインターフェイスをリクエストします。構造は Promise の形式にすることもでき、データは自動的に json に解析されます。これは非常にシンプルで便利だと言えます。

は、「ユーザーフレンドリーで強力な Node.js HTTP リクエスト ライブラリ」であると主張しています。そのユーザーフレンドリーさは、Promise スタイルの API と JOSN 処理構成、および HTTP2 サポート、ページング API、RFC のキャッシュなどの使用にあります。およびその他の機能は、ほとんどのリクエスト ライブラリでは利用できません。
次のコマンドを使用して got をインストールできます:
npm i -S [email protected]
以下は、got を通じて Nuggets セクション分類を取得する方法の簡単な例です:
const chalk = require("chalk")
const got = require('got');
got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', {
応答タイプ: 'json'
})
.then(res => {
const {データ} = res.body
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('エラー: ', err.message);
ここでは、最初に{responseType: 'json'}を使用してリクエスト インターフェイスを構成する必要があります。その後、返されたデータを本文で取得できます。これも非常に使いやすいです。

は、比較的シンプルでコンパクトなリクエスト ライブラリです。Promise またはコールバック関数の形式を選択できます。また、その戻り値は XML と JSON を自動的に変換します。便利です。
次のコマンドを使用して、needle をインストールできます:
npm i -S needneedle
を通じて Nuggets セクション分類を取得する方法の簡単な例を次に示します:
const chalk = require("chalk")
const 針 = require('針');
neede.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => {
if (err) return console.log('エラー: ', err.message);
const {データ} = res.body
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
ここでは、
コールバック関数を使用して説明します。成功すると、err が返され、要求されたデータが返されます。優れたjson形式。

Promise を使用したい場合は、次のように記述できます:
needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs')
.then(関数(レス) {
// ...
})
.catch(関数(エラー) {
// ...
Superagentリクエスト ライブラリ superagent2011 年にリリースされたかなり早い時期にリリースされましたが、同じ API を備えた Node.js モジュールで多くの高度な HTTP クライアント機能をサポートする進歩的なクライアント HTTP リクエスト ライブラリです。
次のコマンドを使用してスーパーエージェントをインストールできます:
npm i -S superagent スーパーエージェント
を通じて Nuggets セクション分類を取得する方法の簡単な例を次に示します:
const chalk = require("chalk")
const superagent = require('superagent');
superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs')
.then(res => {
const { データ } = JSON.parse(res.text)
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('エラー: ', err.message);
現在のスーパーエージェント
の使用法は axios と非常に似ていますが、データを自分で json 形式に処理する必要があります。

はリクエスト ライブラリであり、その API は window.fetch と一貫性があり、Promise ベースでもあります。最近非常に人気がありますが、おそらく最大の問題は、v2 と v3 のバージョンに大きな違いがあることです。v2 は cjs 標準を維持していますが、v3 は ejs 方式を使用しているため、アップグレード後に何らかの問題が発生する可能性があります。この標準を統一するために、ここではバージョン 2.6.7 をデモンストレーション バージョンとして使用します。
次のコマンドを使用して、node-fetch をインストールできます:
npm i -S [email protected]
以下は、node-fetch を通じて Nuggets セクション分類を取得する方法の簡単な例です:
const chalk = require("chalk")
const fetch = require("ノードフェッチ")
fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', {
メソッド: 'GET'
})
.then(async res => {
let { data } = await res.json()
data.forEach(item => {
console.log(`${chalk. yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('エラー: ', err.message);
学習のプレッシャーがなく、window.fetch とまったく同じように使用されていることが
わかります。

、過去 1 年間のこれらのリクエスト ライブラリのダウンロード傾向グラフを見てみましょう。

過去 1 年間のダウンロードでは、node-fetch が最も人気があり、needele が最も人気がなかったことがわかります。
| Stars | バージョン | 解凍後のサイズ | 作成年 | |
|---|---|---|---|---|
| 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 | 2015 | こちら
これらのライブラリの他のデータを数えてみると、axios の星の数は他のいくつかのライブラリをはるかに上回り、比類のないものであると言えます。
これらのリクエスト ライブラリはすべて同じことを行い、HTTP リクエストを開始できます。おそらく、記述方法は若干異なりますが、すべての道はローマに通じています。個人的に言えば、私はブラウザ側で書くことが多いためか、axios の練習でも開発でも axios の愛用者です。もちろん、node-fetch もますます増えています。パッケージも非常に小さいため、練習中によく使用されますが、API はまだ axios ほど便利ではありません。
実際、この記事では触れていない有名な HTTP リクエスト ライブラリが 2 つあります。1
つは ky.js で、非常に小さく強力なフェッチ スタイルのリクエスト ライブラリです。これは主に deno および最新のブラウザ向けに構築されているため、私は参加しません。当面はディスカッションに参加し、興味のある学生は自分で調べてください。
もう 1 つは request.js です。これは、2020 年に完全に非推奨になったためです。これを使用していた場合は、プロジェクト内のリクエストを他のメソッドに置き換えることができます。

この記事は以下から転載しました: https://juejin.cn/post/7074749427637813284
著者: jsmask