ノードヘルプ

Node.js Fetch (開発者のための仕組み)

Node Fetchは、Node.jsエコシステムで人気のある軽量のモジュールで、HTTPリクエストを簡単かつ直感的に行うために設計されています。ブラウザ環境で利用可能なFetch APIに触発された、Web APIとやり取りするための軽量で親しみやすい方法を提供します。 Node-fetch は、Node.js において Fetch API のサポートを提供し、サービスワーカーが HTTP ヘッダーを処理し、HTTPS リクエストを効率的にフェッチできるようにします。

この記事では、Node-fetchの主な機能と使用法を探求することに役立ち、Node.jsでHTTPリクエスト処理を効率化しようとする開発者のための包括的なガイドを提供します。 また、プログラマーがPDFの作成や編集、HTMLコンテンツのPDFへの変換などを行うためのNode.js用のPDFライブラリであるIronPDFも利用します。

Node.js fetchとは何ですか?

Node fetchは、Node.jsにFetch APIをもたらすモジュールです。 Fetch APIは、主にウェブブラウザで使用されるHTTPリクエストを行うための最新のインターフェースです。 Node.js fetchはこの機能を再現し、Node.jsアプリケーションがHTTPリクエストを同様に簡単かつシンプルに実行できるようにします。 これは、すでにFetch APIに精通している開発者や、Node.jsアプリケーションでHTTPリクエストを簡単に処理したいと考えている開発者にとって、優れた選択肢となります。

Node.js Fetch(開発者向けの動作方法):図1 - Node.js Fetch

Node.js Fetchの主な機能

1. シンプルさと親しみやすさ

Node.js fetchは、ブラウザにあるFetch APIを模倣し、開発者にとってシンプルで馴染みのあるインターフェースを提供します。

2. Promiseベース

Fetch APIと同様に、Node.js fetchもPromiseベースであり、開発者が非同期コードをより読みやすく、管理しやすい方法で書くことを可能にします。

3. 軽量

Node.js fetchはシンプルなライブラリで、迅速かつ効率的です。 それはより大きなHTTPライブラリのオーバーヘッドを伴わないため、アプリケーションをスリムに保ちます。

4. 互換性

Node.js fetchは、広範囲のHTTPメソッド、ヘッダー、およびレスポンスタイプをサポートしており、高度に多用途です。

5. ストリーミング

それはストリーミングレスポンスをサポートしており、大きなペイロードを効率的に処理するのに役立ちます。

Node.js Fetchのインストール

Node-fetchを始めるには、npm (Node Package Manager) を介してインストールする必要があります。 プロジェクトディレクトリで次のコマンドを実行します。

npm install node-fetch

基本的な使用法

以下は、Node.jsのfetchを使用してGETリクエストを行う基本的な例です。

import fetch from 'node-fetch';
import fs from 'fs';
const url = 'https://jsonplaceholder.typicode.com/posts';
fetch(url)
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        return response.json();
    })
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error('There has been a problem with your fetch operation:', error);
    });
js
JAVASCRIPT

このコードスニペットは、APIからJSONデータを取得するための簡単なGETリクエストを示しています。 fetch 関数は、レスポンスオブジェクトに解決されるプロミスを返します。 その後、レスポンスを解析するために、json() のようなレスポンスを返すメソッドを呼び出すことができます。

コンソール出力

Node.js Fetch(開発者向けの仕組み):図2 - Node.js fetchを使用してAPI URL "https://jsonplaceholder.typicode.com/posts" からJSONデータを取得するためのシンプルなGETリクエストのコンソール出力。

高度な使用法

Node.js fetchは、POSTリクエストの送信、カスタムリクエストヘッダーオブジェクトの設定、異なるレスポンスタイプの処理など、より高度な機能もサポートしています。

POSTリクエストを作成する

import fetch from 'node-fetch';
import fs from 'fs';
const url = 'https://jsonplaceholder.typicode.com/posts';
const data = { key: 'value' };
fetch(url, {
    method: 'POST',
    // Content Type Header
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
})
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        return response.json();
    })
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error('There has been a problem with your fetch operation:', error);
    });
js
JAVASCRIPT

この例は、JSONペイロードを持つPOSTリクエストオブジェクトを送信する方法を示しています。 headers オプションは、新しいレスポンスのコンテンツタイプを指定するために使用され、body オプションにはシリアル化されたJSONデータが含まれます。

コンソール出力

Node.js Fetch(開発者向けの仕組み):図3 - Node.js fetchを使用してURL「https://jsonplaceholder.typicode.com/posts」へ送信されたPOSTリクエストオブジェクトのコンソール出力

ストリーミングレスポンスの処理

import fetch from 'node-fetch';
import fs from 'fs';
const url = 'https://jsonplaceholder.typicode.com/posts';
fetch(url)
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        const dest = fs.createWriteStream('./large-data.json');
        response.body.pipe(dest);
    })
    .catch(error => {
        console.error('There has been a problem with your fetch operation:', error);
    });
js
JAVASCRIPT

この例では、レスポンスボディをファイルストリームとしてサーバーにパイプし、大きなレスポンスを効率的に処理する方法を示しています。

出力

Node.js Fetch(開発者にとっての仕組み):図4 - 出力ファイル:large-data.json

エラーハンドリング

HTTPリクエストを扱う際、適切なエラー処理は非常に重要です。 Node.jsのfetchエラー応答は、Promiseを使用してエラーをキャッチし処理する簡単な方法を提供します。

fetch(url)
    .then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        return response.json();
    })
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error('Fetch error:', error);
    });
js
JAVASCRIPT

ここでは、レスポンスヘッダーのステータスが200〜299の範囲にない場合にエラーがスローされ、キャッチブロックがリクエスト中に発生するエラーを処理し、有効なJSONレスポンスが返されます。

Node.jsのfetchを使用してIronPDFでNode.jsでPDFを生成する

Node fetchは、HTTPフェッチリクエストを行うためのNode.jsエコシステムにおいて人気のあるライブラリです。 IronPDFという強力なPDF生成ライブラリと組み合わせた場合、さまざまなウェブリソースからPDFを作成するための多用途ツールになります。

IronPDFとは何ですか?

IronPDF は、開発者がPDFからコンテンツを簡単かつ効率的に作成、編集、抽出できる強力なライブラリです。 C#、Python、Java、Node.jsで利用可能なIronPDFは、その直感的なAPIによりPDFの操作を簡単にします。

Node.js Fetch(開発者向けの動作方法): 図5 - IronPDF for Node.js: Node.js PDFライブラリ

IronPDFライブラリのインストール

まず、プロジェクトにIronPDFをインストールする必要があります。 これらのライブラリをインストールするには、次のnpmコマンドを使用してください。

npm i @ironsoftware/ironpdf

Node.jsのfetchを使用してウェブコンテンツソースからPDFを生成するために、IronPDFの使用方法を探ってみましょう。

Node.js fetchとIronPDFの組み合わせ

Node.js fetchとIronPDFの両方のパワーを活用して、ウェブコンテンツを動的に取得し、PDFを生成できます。 たとえば、APIエンドポイントのデータを取得し、動的なHTMLを生成し、それをPDFに変換することができます。 次の例は、このタスクを達成する方法を示しています。

import fetch from 'node-fetch';
import { PdfDocument } from '@ironsoftware/ironpdf';
(async () => {
    // Replace the apiUrl with the actual Url
    const apiUrl = "https://jsonplaceholder.typicode.com/posts";
    // Fetch data from API
    const response = await fetch(apiUrl);
    const data = await response.json();
    // Create dynamic HTML content with a table
    const htmlContent = `
        <!DOCTYPE html>
        <html>
        <head>
            <title>Data Report</title>
            <style>
                body {
                    font-family: Arial, sans-serif;
                    margin: 40px;
                }
                table {
                    width: 100%;
                    border-collapse: collapse;
                }
                table, th, td {
                    border: 1px solid black;
                }
                th, td {
                    padding: 10px;
                    text-align: left;
                }
                th {
                    background-color: #f2f2f2;
                }
                h1 {
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Data Report</h1>
            <table>
                <tr>
                    <th>User ID</th>
                    <th>ID</th>
                    <th>Title</th>
                    <th>Body</th>
                </tr>
                ${data.map(item => `
                    <tr>
                        <td>${item.userId}</td>
                        <td>${item.id}</td>
                        <td>${item.title}</td>
                        <td>${item.body}</td>
                    </tr>
                `).join('')}
            </table>
        </body>
        </html>
    `;
    // Generate PDF from the HTML string
    const pdfFromHtmlString = await PdfDocument.fromHtml(htmlContent);
    await pdfFromHtmlString.saveAs("dynamic_report.pdf");
    console.log("PDF generated from API data successfully!");
})();
js
JAVASCRIPT

PDFを出力

JSONレスポンス出力はエレガントにHTMLテーブルにマッピングされ、IronPDFはそのすべてのスタイリングを正確に変換します。

 Node.js Fetch(開発者向けの動作原理):図6 - HTML文字列がIronPDFを使用して正確にPDFに変換されました。

詳細については、IronPDFとその機能について、このドキュメントページを参照してください。

結論

Node fetchは、Node.jsでHTTPリクエストを行うための強力でシンプルなツールです。 親しみやすいAPI、Promiseベースのアプローチ、そして軽量な性質により、初心者と経験豊富な開発者の両方にとって優れた選択肢になります。 基本的なGETリクエストを実行する場合でも、カスタムヘッダーを含む複雑なPOSTリクエストを処理する場合でも、Node fetchはWeb APIと対話するためのクリーンで効率的な方法を提供します。

Node fetchIronPDFを組み合わせることで、Node.jsで様々なウェブコンテンツソースからPDFを生成するための強力で柔軟な方法を提供します。 これらの2つのライブラリを統合することで、ウェブデータを活用し、簡単にプロフェッショナルなPDFを生成する堅牢なアプリケーションを作成できます。

IronPDF は $749 から開始します。 その強力なPDF生成機能をリスクなしで体験してください。 ぜひ試して、自分自身で違いを確認してください!

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得しており、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに魅了され、コンピューティングを神秘的でありながらアクセスしやすいものと見なし、それが創造性と問題解決のための完璧な媒体であると感じました。

Iron Softwareでは、新しいものを作り出し、複雑な概念を簡単にすることでより理解しやすくすることを楽しんでいます。彼は常駐の開発者の一人として、学生に教えることを志願し、自分の専門知識を次世代と共有しています。

Darriusにとって、彼の仕事は評価され、実際に影響があることで充実しています。

< 以前
Ramda JS NPM(開発者向けの仕組み)
次へ >
Multer Node.js(開発者向けの動作方法)