ホームページ > 記事 > ウェブフロントエンド > ノードが HTTP リクエストを開始する 6 つの方法の簡単な分析
Node で HTTP リクエストを開始するにはどうすればよいですか?この記事では、HTTP リクエストを開始するための Node の 6 つの異なるメソッドについて説明します。
この記事では、nodejs で HTTP リクエストを開始する 6 つの異なる方法を紹介します。ここでは、 リクエストについて詳しく見ていきます。 Jin Community のセクション分類インターフェイス
は、それぞれの異なるメソッドの使用を完了するためのデモンストレーションとして使用されます。もちろん、取得したデータをより鮮明に印刷するには、chalk ライブラリをインストールする必要があります
事前に印刷したデータに色を追加してください。いよいよ開始します~ [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル 、プログラミング教育 ]
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('Error: ', err.message); });
リクエスト データ ブロック チャンクを格納する空の配列リストを作成する必要があり、リクエストが完了した後、データをバッファを通じて処理して解析する必要があるため、構造は少し複雑です。 json形式に変換します。
npm i -S axios
##
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('Error: ', err.message); });ここでは、axios は get リクエストを直接使用してインターフェイスをリクエストします。構造は Promise の形式にすることもでき、データは自動的に json に解析されます。シンプルで便利。 Got
次のコマンドを使用して got:
npm i -S got@10.7.0をインストールできます。次は、got を通じてナゲッツ プレート分類を取得する方法の簡単な例です:
const chalk = require("chalk") const got = require('got'); got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', { responseType: '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('Error: ', err.message); });ここでは、最初にリクエスト インターフェイス {responseType: 'json'} を設定する必要があります。その後、返されたデータを本文で取得できます。これも非常に簡単です。使用。
#Needle
npm i -S needle
次は、ニードルを通じてナゲッツ セクション分類を取得する方法の簡単な例です。 ##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)}`);
})
})
ここでは、コールバック関数の使用を示します。戻り値には err と res が含まれていることがわかります。成功した場合、err は null です。成功後に返される res の本体は、要求されるデータです。 . ここでは、自動的に変換された json 形式を支援する方法を説明します。
#Promise を使用したい場合は、次のように記述できます:
needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(function(res) { // ... }) .catch(function(err) { // ... });
Superagent
##リクエスト ライブラリ スーパーエージェントは、2011 年に遡るかなり早い時期にリリースされましたが、同じ API を備えた Node.js モジュールを使用して多くの高度な HTTP クライアント機能をサポートする、進歩的なクライアント HTTP リクエスト ライブラリです。
npm i -S superagent
下面是我们通过superagent获取掘金板块分类简单示例:
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('Error: ', err.message); });
现在的superagent用法与axios十分的相似,但是需要去自己把数据处理成json格式。
顾名思义,这个请求库它的api与window.fetch保持了一致,也是promise式的。最近非常受欢迎,但可能最大的问题是,它的v2与v3版差异比较大,v2保持着cjs标准,而v3则用了ejs的方式,升级后可能造成一些困扰,所以为了统一这个标准我们这里用了2.6.7版作为演示版本。
我们可以使用以下命令安装node-fetch:
npm i -S node-fetch@2.6.7
下面是我们通过node-fetch获取掘金板块分类简单示例:
const chalk = require("chalk") const fetch = require("node-fetch") fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', { method: '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('Error: ', err.message); });
可以看出它与window.fetch用起来完全一样,没有任何学习压力。
接下来我们看一下关于这几款请求库近一年的下载量趋势图:
现在我们可以发现,就下载量而言,在过去一年中,node-fetch 最受欢迎,needle 最不受欢迎。
Stars | Version | Unpacked Size | Created Years | |
---|---|---|---|---|
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,434 | 3.2.3 | 106 kB | 2015 |
这里我们又统计了这几个库的其他一些数据,axios的star数量可谓一骑绝尘,远远超过其他几个库。
这些请求库,他们都做了同一件事都可以发起HTTP请求,或许写法会有些许不同,但都是条条大路通罗马。就个人而言,也可能是经常写浏览器端的缘故,所以是axios的忠实用户,不管是练习还是开发axios都是首选,当然node-fetch也越来越收到关注,包也十分的小,练习的时候也会经常用到,但api使用起来感觉还是没有axios那般方便。
其实还有两个出名的HTTP请求库本文没有提到:
一个是ky.js,它是一个非常小巧且强大的fetch式的请求库,主要为deno和现代浏览器所打造,所以暂时不参与其中的讨论,感兴趣的同学自己探索。
另一个就是request.js,没有说的原因是它在2020年的时候就已经被完全弃用了,如果有使用过的小伙伴可以在把项目里的request它替换成其他的方法。
更多node相关知识,请访问:nodejs 教程!
以上がノードが HTTP リクエストを開始する 6 つの方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。