Node-fetch を使用して Node.js で HTTP リクエストを作成する方法

Node Fetch Wo Shi Yongshite Node Js De Http Rikuesutowo Zuo Chengsuru Fang Fa



HTTP リクエストは非常に重要であり、URL からグローバルに情報を取得するために行われます (Web サイトの呼び出しなど)。このアプローチは、Web アプリケーションがリソースにアクセスするために Web サーバーとの通信を確立する必要がある場合に有効になります。たとえば、データを取得したり、Web サーバーや API に投稿したりします。

JavaScript では、「」経由で実行できます。 window.fetch() ' 方法。ただし、「」では、 ノード.js 」のように、この機能は複数のパッケージ (ノードフェッチなど) を使用して実現できます。

このブログでは、次のコンテンツ領域について説明します。







「ノードフェッチ」とは何ですか?

ノードフェッチ 」は、node.js からフェッチ API にアクセスできるようにする軽量モジュールに対応します。このモジュールを使用すると、ユーザーは「 フェッチ() 「node.js のメソッドは JavaScript とほぼ同様です」 window.fetch() ' 方法。



構文(fetch()メソッド)



フェッチ ( URL [ 、オプション ) ;

この構文では次のようになります。





  • URL 」は、フェッチ/取得する必要があるリソースの URL を指します。
  • オプション ” パラメータは、” を作成する以外に “fetch()” メソッドを使用する必要がある場合に必要です。 得る ' リクエスト。

戻り値

この関数は、次のように HTTP 応答に関する情報を含む Response オブジェクトを取得します。



  • 文章: 応答本文を文字列形式で取得します。
  • ヘッダー: 応答ハンドラーを構成するオブジェクトを返します。
  • json(): JSON オブジェクトの応答本文を解析します。
  • ステータステキスト/ステータス: HTTPステータスコードに関する情報が含まれます。
  • わかりました: 「」を与えます 真実 ステータスが 2xx ステータス コードの場合。

ノードフェッチを使用するための前提条件

「」を始める前に考慮すべき前提条件は次のとおりです。 ノードフェッチ ”:

  • 17.5 バージョン以上、またはそれより最新のバージョンがインストールされている。
  • JavaScript の基本的な知識。

ノードフェッチを使用してnode.jsでHTTPリクエストを行う方法は?

HTTP リクエストの作成は非同期手順であり、リクエストされた応答の受信には時間がかかります。非同期手順を利用するには 2 つの方法論が存在する可能性があります。 1 つ目は、ユーザーが応答を待ってからコードを再開できることです。もう 1 つはコードを並列実行します。

ノードフェッチを始めるにはどうすればよいですか?

「」を開始またはインストールする前に ノードフェッチ 」モジュールで、以下のコマンドを使用してノード プロジェクトを初期化します。

npm初期化 - そして

このコマンドを実行すると「 パッケージ.json 次のように、現在のディレクトリに「ファイル」を追加します。

次に、「」をインストールします。 ノードフェッチ 次のコマンドレットを使用してモジュールを作成します。

npmインストールノード - フェッチ

ただし、ターゲット モジュール バージョンをインストールするには、次のコマンドを使用します。

npmインストールノード - フェッチ@ 2.0

この場合、「 2.0 」バージョンのモジュールがインストールされます。

注記: 例に進む前に、「 インデックス.mjs 」ファイルをワークスペースに追加し、機能を適用するために使用します。

例 1: ノードフェッチ経由で取得リクエストを送信する

ノードフェッチ 」モジュールを利用して、Web サーバーからテキストを取得したり、Rest API 経由でデータを取得したりできます。

作成した「」に記述した以下のコード例 インデックス.mjs ” ファイルは、YouTube ホームページへの簡単な Get リクエストを作成します。

輸入 フェッチ から 「ノードフェッチ」 ;

フェッチ ( 「https://youtube.com」 )

それから ( レス => 解像度。 文章 ( ) )

それから ( 文章 => コンソール。 ログ ( 文章 ) ) ;

これらのコード行では次のようになります。

  • 「」をロードします ノードフェッチ 」モジュールを開き、HTTP リクエストが行われる指定された URL を介して YouTube のホームページを取得します。
  • その後、「」を連鎖させます。 それから() 」メソッドを使用して、作成されたリクエストからの応答とデータを処理します。
  • 前者の「then()」メソッドは、YouTube サーバーからの応答を取得してテキスト形式に変換するのを待つことを示します。
  • 後者の「then()」メソッドは、前の変換の結果を待っていることを示し、それをコンソールに表示します。

出力

次に、次のコマンドレットを使用してコードを実行します。

ノードインデックス。 mjs

上記のコマンドを実行すると、コンソールに表示される YouTube ホームページの HTML マークアップ全体が取得されます。

例 2: REST APIからJSONデータを取得する

この例では「 ノードフェッチ 」を介して偽のデータを取得します。 JSONプレースホルダー レストAPI。それは、「 フェッチ() 」メソッドはサーバーの URL で構成され、応答を待ちます。

輸入 フェッチ から 「ノードフェッチ」 ;

フェッチ ( 「https://jsonplaceholder.typicode.com/users」 )

それから ( レス => 解像度。 json ( ) )

それから ( json => {

コンソール。 ログ ( 「最初のアレイユーザー ->」 ) ;

コンソール。 ログ ( json [ 0 ) ;

コンソール。 ログ ( 「最初のアレイのユーザー名 -> 」 ) ;

コンソール。 ログ ( json [ 0 名前 ) ;

} )

このコード ブロックに従って、次の手順を実行します。

  • HTTPS 本文は、ユーザーのデータを含む JSON 形式のデータで構成されます。
  • その後、「 json() 」関数は、個々のエントリと対応する値を呼び出すために適用されます。

出力

以下のコマンドレットを適用してコードを実行します。

ノードインデックス。 mjs

例 3: ノードフェッチを介したリクエストの送信

ノードフェッチ 」モジュールを使用して、リクエストを取得する代わりに投稿することもできます。これは、「 フェッチ() 」メソッドには、サーバーに POST リクエストを行うための追加パラメーターが含まれています。

このパラメータで割り当てることができるオプションは複数あります。ただし、この場合、「 方法 '、' ' そして ' ヘッダー 」が使用されます。各オプションの説明は次のとおりです。

  • 方法 」オプションは、HTTP リクエストのタイプ、つまりこのシナリオでは「POST」を設定します。
  • 」オプションはリクエストの本文を構成します。
  • ヘッダ ” オプションには、必要なヘッダーがすべて含まれています。つまり、” コンテンツタイプ このシナリオでは。

次に、JSON プレースホルダーの「」に新しい項目を追加して、投稿リクエストを送信する実際の実装に進みます。 全て ”。これは、userID が「476」であるリストに新しい項目を追加することで実行されます。

輸入 フェッチ から 「ノードフェッチ」 ;

すべてを任せてください = {

ユーザーID : 476

サイト : 「これは Linuxhint です」

完成した : 間違い

} ;

フェッチ ( 「https://jsonplaceholder.typicode.com/todos」 {

方法 : '役職'

: JSON。 文字列化する ( 全て )

ヘッダー : { 「コンテンツタイプ」 : 「アプリケーション/json」 }

} ) それから ( レス => 解像度。 json ( ) )

それから ( json => コンソール。 ログ ( json ) ) ;

このコードでは:

  • まずはtodoオブジェクトを作成し、bodyに追記しながらJSONに変換します。
  • ここで、同様に、必要なオプションを含む URL を「」として指定します。 フェッチ() 」メソッドのオプションのパラメータ。
  • その後、「」を適用します。 JSON.stringify() 」メソッドを使用して、Web サーバーに送信/送信する前に、オブジェクトを書式設定された (JSON) 文字列に変換します。
  • 今後は、「」を組み合わせて実装します。 それから() 」メソッドを使用して、それぞれ応答を待機し、データを JSON に変換し、コンソールにログを記録することでデータを取得します。

出力

コードを実行するには、以下のコマンドを実行します。

ノードインデックス。 mjs

HTTPステータスコードとは何ですか?

次の例に進む前に、応答に「 3xx 」ステータス コードが返された場合、クライアントは追加の手順を実行する必要があります。同様に、「 4xx ” コードは無効なリクエストを表し、” 5xx 」コードはサーバーエラーに対応します。

注記: キャッチ() 」機能ではサーバー通信が効率化されるため、上記のようなケースには対応できません。したがって、失敗したリクエストがエラーを返すようにするための効果的なアプローチは、サーバーの応答の HTTP ステータスを分析する関数を定義することです。

例 4: 例外と制限への対処

送信されたリクエストには、インターネットの問題など、いくつかの制限または例外が存在する可能性があります。 フェッチ() ”機能制限等。これらの例外は”を付加することで対応可能です。 キャッチ() ' 関数:

関数分析ステータス ( バツ ) {

もし ( バツ。 わかりました ) {

戻る バツ

} それ以外 {

投げる 新しい エラー ( `レスポンスに関するHTTPステータス -> $ { バツ。 状態 } ( $ { バツ。 ステータステキスト } ) ` ) ;

}

}

フェッチ ( 「https://jsonplaceholder.typicode.com/MissingResource」 )

それから ( 分析ステータス )

それから ( バツ => バツ。 json ( ) )

それから ( json => コンソール。 ログ ( json ) )

キャッチ ( エラー => コンソール。 ログ ( エラー ) ) ;

このコードのスニペットでは次のようになります。

  • まず、直面する制限に対処するために応答を解析する前に、指定されたパラメーターを持つ関数を定義します。
  • ここで、「」を含めます。 もし/そうでなければ 」ステートメントを使用して、発生したエラーまたはカスタム制限をスローします。
  • 以降、同様に「」を適用します。 フェッチ() 」メソッドと関連する「then()」メソッドを使用して、応答を待機し、データを JSON に変換し、コンソールにログインすることでデータを取得します。
  • 最後に、実行時例外は、「」を配置することで処理できます。 キャッチ() 」メソッドをプロミスチェーンの最後に追加します。

出力

最後に、以下のコマンドレットを実行してコードを実行し、発生した例外をスローします。

ノードインデックス。 mjs

「ノードフェッチ」のその他の使用例

ノードフェッチ 「」の作成にも使えます。 APIリクエスト ' または ' ウェブスクレイピング ”。これらの使用例について詳しく説明します。

API リクエストを行うためのノードフェッチの利用

API は、バックエンド ソース経由でターゲット データをフェッチするために、いくつかのシナリオで必要になる場合があります。 HTTP リクエストには、API プロバイダーがユーザーのみに限定されたキーを提供する API キーの利用など、さまざまな認証方法を含めることができます。 API を保護するもう 1 つのアプローチは、「 基本認証 」では、API を呼び出すためにヘッダーを送信する必要があります。

以下は、後者のアプローチ、つまり「」の助けを借りたポストリクエストでの「基本認証」のデモンストレーションです。 フェッチ() ' 方法:

( 非同期 ( ) => {

定数 バツ = フェッチを待つ ( 「http://httpbin.org/post」 {

方法 : '役職'

ヘッダー : {

「認可」 : `基本的な$ { 兄弟 ( 'ログインパスワード' ) } `

}

: JSON。 文字列化する ( {

'鍵' : '価値'

} )

} ) ;

定数 結果 = ×を待つ。 文章 ( ) ;

コンソール。 ログ ( 結果 ) ;

} ) ( ) ;

上記のデモでは、ヘッダーは「 Base64 ” 形式のエンコードされた文字列” ログインパスワード ”。

Webスクレイピングのためのノードフェッチの利用

ウェブスクレイピング 」とは、サイトからデータ/コンテンツを取得して解析する技術を指します。この解析は、「 チェリオ ' 図書館。

以下は、「」経由でページのタイトルを取得するデモです。 フェッチ() 「方法」と「 チェリオ ' 図書館:

定数 ライブラリ = 必要とする ( 「乾杯」 ) ;

( 非同期 ( ) => {

定数 バツ = フェッチを待つ ( 「https://linuxhint.com/」 ) ;

定数 そして = ×を待つ。 文章 ( ) ;

定数 $ = リブ。 負荷 ( そして ) ;

コンソール。 ログ ( $ ( 'タイトル' ) 初め ( ) 文章 ( ) ) ;

} ) ( ) ;

この例では、「」のタイルを取得します。 Linux 」サイトのタイトル。

結論

node.js の HTTP リクエストは、get リクエストの送信、REST API からの JSON データの取得、または post リクエストの送信によって、node-fetch を使用して作成できます。また、例外と制限は、「 キャッチ() ' 関数。