節點幫助

Node.js Fetch(開發者如何使用)

Darrius Serrant
Darrius Serrant
2024年9月29日
分享:

Node Fetch 是 Node.js 生態系統中受歡迎的輕量級模組,旨在讓 HTTP 請求變得簡單直觀。它提供了一種輕量且熟悉的方式來與 Web API 互動,靈感來自於瀏覽器環境中提供的 Fetch API。 Node-fetch在Node.js中提供Fetch API支持,使服務工作者能有效地處理HTTP標頭並執行fetch HTTPS請求。

本文將幫助您探索Node-fetch的關鍵功能和用法,為尋求在Node.js中精簡HTTP請求處理的開發者提供全面指南。 我們還將利用IronPDF,這是一款適用於Node.js的PDF庫,可讓程式開發人員創建和編輯PDF、將HTML內容轉換為PDF等。

什麼是 Node.js fetch?

Node fetch 是一個將 Fetch API 引入 Node.js 的模組。 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);
    });
JAVASCRIPT

此程式碼片段展示了一個簡單的 GET 請求,用於從 API 獲取 JSON 數據。 fetch 函數返回一個會解決為回應物件的承諾。 接著,你可以呼叫回傳回應的方法,例如 json() 來解析回應內文。

控制台輸出

Node.js Fetch(開發人員指南):圖 2 - 使用 Node.js fetch 發送簡單的 GET 請求以從 API URL "https://jsonplaceholder.typicode.com/posts" 提取 JSON 數據的主控台輸出。

進階用法

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);
    });
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);
    });
JAVASCRIPT

在此範例中,響應主體被作為檔案流傳遞到伺服器,以展示如何有效處理大型響應。

輸出

Node.js Fetch(開發者如何使用):圖4 - 輸出文件:large-data.json

錯誤處理

在處理 HTTP 請求時,正確的錯誤處理至關重要。 Node.js 提取錯誤回應提供了一種使用 Promises 捕捉和處理錯誤的簡單方式。

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);
    });
JAVASCRIPT

如果回應標頭狀態不在 200-299 範圍內,這裡會拋出錯誤,並且 catch 區塊會處理請求期間發生的任何錯誤,否則將返回有效的 JSON 回應。

在 Node.js 中使用 Node.js fetch 與 IronPDF 來生成 PDF

Node fetch 是 Node.js 生態系統中用於發送 HTTP fetch 請求的熱門庫。 當與IronPDF這個強大的 PDF 生成庫結合使用時,它成為從各種網頁資源創建 PDF 的多功能工具。

什麼是 IronPDF?

IronPDF 是一個強大的程式庫,允許開發者以簡單高效的方式創建、編輯和提取 PDF 的內容。 IronPDF 提供 C#、Python、Java 和 Node.js 版本,其直觀的 API 使 PDF 操作變得簡單。

Node.js Fetch(開發人員如何使用):圖 5 - IronPDF for Node.js:Node.js 的 PDF 庫

安裝 IronPDF 函式庫

首先,您需要在您的專案中安裝IronPDF。 使用以下 npm 指令來安裝這些庫:

npm i @ironsoftware/ironpdf

讓我們來探索如何使用 Node.js fetch 搭配 IronPDF 從網路內容來源生成 PDF。

結合 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!");
})();
JAVASCRIPT

輸出 PDF

JSON 回應輸出被優雅地映射到 HTML 表格,而IronPDF能夠準確地轉換並保留其所有樣式。

Node.js Fetch(對開發人員的運作方式):圖 6 - 使用 IronPDF 準確地將 HTML 字串轉換為 PDF。

如需有關IronPDF及其功能的詳細資訊,請參閱此說明文件頁面

結論

Node fetch 是一個用於在 Node.js 中發出 HTTP 請求的強大而簡單的工具。 其熟悉的 API、基於承諾的方式以及輕量化特性,使其成為初學者和有經驗的開發者的絕佳選擇。 無論您是執行基本的 GET 請求還是處理具有自訂標頭的複雜 POST 請求,Node fetch 都提供了一種與 Web API 互動的簡潔高效的方法。

Node fetchIronPDF相結合,提供了一種強大且靈活的方法,能夠在Node.js中從各種網路內容來源生成PDF。 通過整合這兩個庫,您可以輕鬆創建利用網絡數據並生成專業 PDF 的強大應用程序。

IronPDF 起始價格為 $749。 免費體驗其強大的 PDF 生成功能。 立即試用,自己體驗不同之處!

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant 擁有邁阿密大學的計算機科學學士學位,目前擔任 Iron Software 的全端 WebOps 行銷工程師。自幼對編程產生興趣,他認為計算機既神秘又易於接觸,使其成為創造力和解決問題的完美媒介。

在 Iron Software,Darrius 享受創造新事物並簡化複雜概念使其更易理解的過程。作為我們的其中一位常駐開發人員,他也自願教導學生,將他的專業知識傳授給下一代。

對 Darrius 來說,他的工作之所以令人滿足,是因為它受到重視並且產生了真正的影響。

< 上一頁
Ramda JS NPM(對開發人員的運作方式)
下一個 >
Multer Node.js(開發人員如何使用)

準備開始了嗎? 版本: 2025.3 剛剛發布

查看許可證 >