ノードが HTTP リクエストを開始する 6 つの方法の簡単な分析
Node で HTTP リクエストを開始するにはどうすればよいですか?この記事では、HTTP リクエストを開始するための Node の 6 つの異なるメソッドについて説明します。
この記事では、nodejs で HTTP リクエストを開始する 6 つの異なる方法を紹介します。ここでは、 リクエストについて詳しく見ていきます。 Jin Community のセクション分類インターフェイス
は、それぞれの異なるメソッドの使用を完了するためのデモンストレーションとして使用されます。もちろん、取得したデータをより鮮明に印刷するには、chalk ライブラリをインストールする必要があります
事前に印刷したデータに色を追加してください。いよいよ開始します~ [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル 、プログラミング教育 ]
Text
Node.js HTTPS モジュール
ノード。 js 標準ライブラリには https モジュールがあるため、リクエストを開始するためにライブラリを導入する必要はありません。node.js 自体で実行できるため、いくつかの単純なデータ リクエストを処理するには十分です。
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形式に変換します。
Axiosフロントエンドの友人は axios をよく知っていると思います。非常に人気があり、人気の Promise リクエスト ライブラリです。ブラウザとクライアントの両方で利用でき、インターセプタやjsonへの自動変換など非常に便利な機能も備えているのはご存知の通りです。
次のコマンドを使用して axios をインストールできます: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); });
got は、「Node 用のユーザーフレンドリーで強力な HTTP リクエスト」であると主張しています。 js「ライブラリ」は、Promise スタイルの API と JOSN 処理構成関数を使用しているため、使いやすいですが、HTTP2 サポート、ページング API、RFC キャッシュなどの一部の機能は、ほとんどのリクエスト ライブラリでは利用できません。
次のコマンドを使用して got:
npm i -S got@10.7.0
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); });
#Needle
##needle は比較的シンプルでコンパクトなリクエスト ライブラリで、その形式は Promise メソッドにすることができます。自分の習慣に応じてコールバック関数にすることもでき、その戻り値は XML と JSON を自動的に変換してくれるので、これも非常に便利です。 次のコマンドを使用してニードルをインストールできます:
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)}`);
})
})
#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格式。

Node-fetch
顾名思义,这个请求库它的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 最不受欢迎。
npm i -S 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); });

npm i -S node-fetch@2.6.7
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); });


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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTTP ステータス コード 520 は、サーバーがリクエストの処理中に不明なエラーに遭遇し、より具体的な情報を提供できないことを意味します。サーバーがリクエストを処理しているときに不明なエラーが発生したことを示すために使用されます。サーバー構成の問題、ネットワークの問題、またはその他の不明な理由が原因である可能性があります。これは通常、サーバー構成の問題、ネットワークの問題、サーバーの過負荷、またはコーディング エラーが原因で発生します。ステータス コード 520 エラーが発生した場合は、Web サイト管理者またはテクニカル サポート チームに連絡して詳細情報と支援を得ることが最善です。

http リクエスト エラーの理由の簡単な説明: 504GatewayTimeout: ネットワーク通信中、クライアントは HTTP リクエストを送信することでサーバーと対話します。ただし、リクエストの送信プロセス中にエラー メッセージが表示される場合があります。そのうちの 1 つは 504GatewayTimeout エラーです。この記事では、このエラーの原因と解決策について説明します。 504GatewayTimeout エラーとは何ですか?ゲートウェイタイムオ

http リクエスト エラー: SocketError の解決策 ネットワーク リクエストを行うときに、さまざまなエラーが発生することがよくありますが、その一般的な問題の 1 つが SocketError です。このエラーは、アプリケーションがサーバーとの接続を確立できない場合にスローされます。この記事では、SocketError の一般的な原因と解決策について説明します。まず、Socket とは何かを理解する必要があります。ソケットは、アプリケーションが次のことを可能にする通信プロトコルです。

Go で HTTP リクエストのクエリ パラメータを設定するには、クエリ パラメータの名前と値をパラメータとして受け入れる http.Request.URL.Query().Set() メソッドを使用できます。具体的な手順は次のとおりです。 新しい HTTP リクエストを作成します。クエリパラメータを設定するには、Query().Set() メソッドを使用します。リクエストをエンコードします。リクエストを実行します。クエリパラメータの値を取得します(オプション)。クエリパラメータを削除します(オプション)。

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

PythonHttp リクエストのパフォーマンスを最適化することは、Web アプリケーションの速度と応答性を向上させるために重要です。このガイドでは、ネットワーク アプリケーションのパフォーマンスを向上させるために Python HTTP リクエストを最適化するためのヒントとベスト プラクティスをいくつか紹介します。 1. 接続プーリングを使用します。接続プーリングは、HTTP 接続を管理するためのメカニズムです。これにより、接続の作成と破棄のオーバーヘッドが削減され、HTTP リクエストのパフォーマンスが向上します。 Python は、接続プールのサポートが組み込まれたリクエスト ライブラリを提供します。接続プールを有効にするには、Session オブジェクトを作成するときに pool_connections パラメータを渡すだけで済みます。 importrequestssession=リクエスト.セッション(

Nginx が HTTP リクエストの再試行構成を実装する方法には、特定のコード サンプルが必要です。Nginx は、非常に人気のあるオープン ソースのリバース プロキシ サーバーです。強力な機能と柔軟な構成オプションがあり、HTTP リクエストの再試行構成を実装するために使用できます。ネットワーク通信では、ネットワーク遅延やサーバー負荷などのさまざまな理由により、開始した HTTP リクエストが失敗することがあります。アプリケーションの信頼性と安定性を向上させるために、リクエストが失敗した場合に再試行する必要がある場合があります。 Ngの使い方を紹介します。
