Node.jsでAPIリクエストをするnode-fetchの使い方
node-fetchは、Node.js環境でAPIリクエストを行うためのモジュールです。 node-fetchを使うことで、Node.jsサーバ上で別サービスと連携を行うことができます。
本記事では、node-fetchの基本的な使い方を紹介します。
インストール
require()
を使うために、バージョン2.6.6を指定します。
最新バージョンを使って、require('node-fetch');
を記述すると、Error [ERR_REQUIRE_ESM]: Must use import to load ES Moduleのようなエラーが出力されます。
バージョン3.xを使う場合はpackage.jsonへ"type": "module"
の追加が必要です。
また、利用時に次のように指定します。
本記事では、require()
を使ったサンプルを記載しています。
基本的な使い方
fetch(url, options)
でリクエストを行います。
下記は、GETメソッドで取得したページの内容を出力する例です。
オプション
よく使うオプションとして、次のようなものがあります。
キー | 型 | 内容 |
---|---|---|
method | 文字列 | リクエストメソッド |
headers | オブジェクト | リクエストに追加するヘッダ |
body | 様々 | POSTリクエストに追加する本体 |
その他のオプションは公式を確認ください。
Cookie を設定する
Cookieはオプションのheaders
で設定できます。
formデータを送信する
formデータを送信するには、form-dataを利用します。
インストール
formデータの送り方
レスポンスヘッダの操作
レスポンスヘッダの値を取得する
レスポンスヘッダ内のヘッダの値はheaders.get(headerName)
で取得できます。
指定したヘッダ名が存在するかどうかを確認する
レスポンスヘッダ内に指定したヘッダ名が存在するかどうかはheaders.has(headerName)
で確認できます。
ReadableStream からデータを読み取る
Node.jsでHTTPレスポンスのReadable
ストリームからデータを読み取るには、次のような手順があります。
- レスポンスオブジェクトから
Readable
ストリームを取得する data
イベントを使用してデータを読み取るend
イベントでレスポンスの終了を受け取る
下記は、Response
オブジェクトのbody
プロパティを介してデータを読み取りRAWデータとして結合する例です。
また、上記は次のように記述しても同じように動作します。