跳至頁尾內容
NODE 說明

express validator npm(開發者的使用方法)

在 Node.js 應用程式中整合express-validatorIronPDF,可以透過結合強大的表單驗證能力與動態 PDF 生成的方式,增強基於經過驗證的使用者輸入資料生成 PDF 文件的過程。 Express.js 應用程式現在可以輕鬆使用 express-validator 來驗證傳入 HTTP 請求資料,並確保輸入符合預定標準後再進行處理。 透過此介面,開發人員可以輕鬆地驗證表單輸入,例如使用者提交的資料,以建立 PDF 報告或證書,確保在建立文件的過程中正確性和可靠性。

開發人員可以藉由使用express-validatorIronPDF強大的 PDF 建立能力,簡化安全驗證使用者輸入和動態建立個性化 PDF 文件的過程,從而改善使用者體驗和應用程式功能。 這種合作確保資料完整性,同時使開發人員能夠設計靈活的應用程式,以有效管理已驗證的使用者資料並提供高質量的 PDF 輸出。

什麼是 express-validator?

express-validator 是一個用於 Node.js Web 框架 Express.js 的中介軟體模組,其目標是使在線應用程式中的使用者輸入資料驗證和清理更加簡單和高效。 Express 的 Validator 模組是一套完整的驗證和清理功能,開發人員可以快速將其納入控制器和路由中。 它基於 Express.js 的中介軟體架構之上構建。 開發人員可以使用其宣告式和流暢的 API 來構建驗證規則,設定例如必填字段、資料型別、長度、格式(例如電子郵件地址或 URL)以及自定義驗證。

express validator npm (How It Works For Developers): Figure 1 - express-validator for express.js and Node.js applications

Express Validator 的多用途來自於其處理同步和異步驗證操作的能力。 在處理請求的過程中,它自動收集驗證錯誤,這些錯誤可隨後方便地存取和管理以進行錯誤管理和回應建構。 此外,express-validator 具有整合的清理功能,有助於在驗證之前清理和準備資料輸入,從而增強應用程式的資料安全性和完整性。 總的來說,Express Validator 通過簡化驗證和清理使用者輸入的困難過程,幫助開發人員在其 Express.js 應用程式中保持資料完整性、提高應用程式可靠性並改善整體使用者體驗。

Express-validator 提供了一些關鍵功能,這使其成為一個有效的驗證和清理 Express.js 應用程式中使用者輸入的工具:

1. 宣告性驗證規則

可以使用 Express Validator 的流式 API 定義可連結的方法來定義驗證規則。 使用自定義函式(custom),開發人員可以定義規則,例如必填字段、資料型別(isStringisEmailisInt等)、長度(isLength),以及更複雜的驗證。

2. 清理功能

除了驗證之外,Express Validator 還具有內建的清理流程(trimescapetoInt等),以在驗證之前清理和格式化輸入資料。 確保資料一致性並減少 XSS 攻擊等漏洞。

3. 異步驗證

由於其支持異步驗證活動,開發人員可以對資料庫或外部服務(自定義驗證器可能是異步的)進行異步驗證資料。

4. 錯誤處理

在請求的處理過程中,Express Validator 自動收集驗證錯誤並提供一個標準化的錯誤訊息格式(validationResult),用於管理和存取這些問題。 這有助於處理驗證失敗並生成適當的錯誤回答。

5. 自定義驗證器

開發人員可以設計自定義驗證和清理流程(custom 和 sanitize 方法)以滿足其應用程式的特殊需求。 由於其適應性,express-validator 可以用於超出其設計範圍的任務。

6. 與 Express.js 的整合

express-validator 是一個中介軟體庫,運行良好的與 Express.js 應用可以用於在處理程式和路由中驗證傳入的請求資料,或透過使用 app.use() 函式的中介軟體鏈來使用。

7. 本地化錯誤訊息

由於其支持本地化,開發人員可以提供多種語言的錯誤訊息或格式,以滿足應用程式的具體需求。

8. 詳盡的文件

透過 Express Validator 的詳盡文件、範例和指南,開發人員可以輕鬆理解和應用驗證和清理邏輯。

建立和配置 express-validator

通常,您會將 express-validator 連接到 Express.js 的中介軟體設置中,以便在 Node.js 應用程式中開發和配置 express-validator npm。 以下是配置和設置 express-validator 的詳細說明:

安裝所需的包

using npm 安裝 express 和express-validator包:

npm install express 
npm install express-validator
npm install express 
npm install express-validator
SHELL

建立一個 Express 應用程式

建立一個index.js文件,並配置您在其中的 Express 應用程式。 引入所需模組(validator 和 express):

const express = require('express');
const { body, validationResult } = require('express-validator');
var bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

const port = 3000; // Choose your preferred port number
const express = require('express');
const { body, validationResult } = require('express-validator');
var bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

const port = 3000; // Choose your preferred port number
JAVASCRIPT

定義驗證中介軟體

可使用 express-validator 建立驗證傳入請求的中介軟體函式。 例如,驗證具有所需字段和特定資料型別的 POST 請求主體:

app.post('/submit', [
  // Validate and sanitize fields
  body('username').isString().notEmpty(),
  body('email').isEmail().normalizeEmail(),
  body('age').isInt({ min: 18, max: 99 })
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }
  // If validation passes, process the request
  const { username, email, age } = req.body;
  // Perform further operations here
  res.status(200).json({ message: 'Data validated and processed successfully' });
});
app.post('/submit', [
  // Validate and sanitize fields
  body('username').isString().notEmpty(),
  body('email').isEmail().normalizeEmail(),
  body('age').isInt({ min: 18, max: 99 })
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }
  // If validation passes, process the request
  const { username, email, age } = req.body;
  // Perform further operations here
  res.status(200).json({ message: 'Data validated and processed successfully' });
});
JAVASCRIPT

處理驗證錯誤

在路由處理程式中檢查驗證問題,使用 validationResult。 如果有任何問題,向客戶端發送驗證問題列表並回應 400 錯誤的請求回應。

啟動 Express 伺服器

最後,啟動 Express 伺服器並設置它在指定的端口上監聽:

app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});
app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});
JAVASCRIPT

輸出

express validator npm (How It Works For Developers): Figure 2 - Console output

如下面所示從 Postman 中請求。

express validator npm (How It Works For Developers): Figure 3 - Postman output: Sending a request with data to the Express.js server on port 3000 using the Postman tool and performing validation using express-validator.

將 express-validator 與 IronPDF 結合

express-validatorIronPDF 可以透過一種結構化方法整合到 Node.js 應用程式中,以驗證使用者輸入並基於已驗證的資料建立 PDF 文件。 以下是 IronPDF 和 express-validator 的分步教程:

什麼是IronPDF?

IronPDF 是一個強大的 Node.js 程式庫,目標是從 HTML 資料建立品質極高的PDF 文件。 在不犧牲原始網路內容的情況下,加速將HTML、CSS和其他JavaScript文件轉換為正確格式的PDF的過程。 對於需要生成動態、可列印文件(如報告、發票和證書)的網頁應用程式來說,這是一個非常有用的工具。

IronPDF 的功能包含可自訂頁面設定、頁眉、頁腳,以及新增字體和圖像的能力。 它能夠處理複雜的佈局和樣式,以保證每個測試的 PDF 輸出滿足需求。 此外,IronPDF 處理 HTML 中的 JavaScript 執行,使能夠精確呈現動態和互動內容。

express validator npm (How It Works For Developers): Figure 4 - IronPDF for Node.js: The Node.js PDF Library

IronPDF的功能

1. 從HTML生成PDF

將JavaScript、HTML和CSS轉換為PDF。 支持媒體查詢和響應式設計這兩種當代 Web 標準。 適合使用 HTML 和 CSS 動態修飾 PDF 文件、報告和帳單。

2. PDF編輯

可以在現有PDF中新增文字、圖片和其他內容。 從 PDF 文件中取出文字和圖片。 將多個 PDF 合併為一個文件。將 PDF 文件分割為多個獨立文件。 包括水印、註釋、頁眉和頁腳。

3. 性能和可靠性

在工業環境下,高效能和可靠性是理想的設計特徵。 輕鬆管理大文件集。

安裝IronPDF

安裝IronPDF 套件,以獲得在 node.js 專案中使用 PDF 的工具。

 npm i @ironsoftware/ironpdf

Express-validator with IronPDF

現在我們將 express-validator 與 IronPDF 結合起來,既可驗證來自使用者輸入的資料,又能使用已驗證的資料生成 PDF 文件。

// app.js
const express = require('express');
const { body, validationResult } = require('express-validator');
const IronPdf = require("@ironsoftware/ironpdf");
const document = IronPdf.PdfDocument; // Import IronPdf's PdfDocument for PDF creation
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set the license key for IronPdf
var bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const port = 3000; // Specify your preferred port number

// POST /generate-pdf route
app.post('/generate-pdf', [
    // Validate and sanitize fields using express-validator
    body('title').isString().notEmpty(),
    body('content').isString().notEmpty()
], async (req, res) => {
    // Check for validation errors
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(400).json({ errors: errors.array() });
    }
    // Extract validated data
    const { title, content } = req.body;
    try {
        // Generate PDF using IronPDF
        let pdf = await document.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
        const pdfBuffer = await pdf.saveAsBuffer();
        // Respond with the generated PDF as a download
        res.set({
            'Content-Type': 'application/pdf',
            'Content-Disposition': 'attachment; filename="generated.pdf"'
        });
        res.send(pdfBuffer);
    } catch (error) {
        console.error('Error generating PDF:', error);
        res.status(500).json({ error: 'Failed to generate PDF' });
    }
});

// Start the server
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});
// app.js
const express = require('express');
const { body, validationResult } = require('express-validator');
const IronPdf = require("@ironsoftware/ironpdf");
const document = IronPdf.PdfDocument; // Import IronPdf's PdfDocument for PDF creation
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set the license key for IronPdf
var bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const port = 3000; // Specify your preferred port number

// POST /generate-pdf route
app.post('/generate-pdf', [
    // Validate and sanitize fields using express-validator
    body('title').isString().notEmpty(),
    body('content').isString().notEmpty()
], async (req, res) => {
    // Check for validation errors
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(400).json({ errors: errors.array() });
    }
    // Extract validated data
    const { title, content } = req.body;
    try {
        // Generate PDF using IronPDF
        let pdf = await document.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
        const pdfBuffer = await pdf.saveAsBuffer();
        // Respond with the generated PDF as a download
        res.set({
            'Content-Type': 'application/pdf',
            'Content-Disposition': 'attachment; filename="generated.pdf"'
        });
        res.send(pdfBuffer);
    } catch (error) {
        console.error('Error generating PDF:', error);
        res.status(500).json({ error: 'Failed to generate PDF' });
    }
});

// Start the server
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});
JAVASCRIPT

當在 Node.js 應用程式中整合 express-validator 和 IronPDF 時,使用者輸入可被嚴格檢查,並使用已驗證的資料動態生成 PDF 文件。 程式碼範例從設置 Express.js 伺服器並引入必要模組開始,這些模組包括用於 PDF 生成的 IronPDF、用於輸入驗證的 express-validator 和用於網頁框架功能的 express。

我們使用 express-validator 中的 body 在我們的 Express 路由(/generate-pdf)中建立驗證標準。 這些規則確保 POST 請求主體的標題和內容字段都是字元且不為空。 express-validator 使用 validationResult 收集驗證錯誤,如果在此過程中發生任何錯誤,則發送 400 錯誤的請求回應以及驗證錯誤陣列。

為了動態生成 PDF,我們假設驗證成功,建立 IronPdf.PdfDocument 類的實例。 我們使用 fromHtml() 方法將 HTML 材料插入到 PDF 文件中,這些材料由已驗證的標題和內容構成。 然後使用 saveAsBuffer() 方法將所得 PDF 轉換為緩衝區(pdfBuffer)。

控制台輸出

express validator npm (How It Works For Developers): Figure 5

伺服器返回生成的 PDF 作為下載文件(application/pdf)以完成過程。 為了方便客戶儲存文件,Content-Disposition 標頭確保 PDF 名為"generated.pdf"。 使用錯誤處理來檢測和記錄在建立 PDF 時可能發生的任何問題,確保在處理使用者請求時的穩定性和可靠性。

輸出

express validator npm (How It Works For Developers): Figure 6 - Postman output: Sending a request with data to the Express.js server on port 3000 using the Postman tool and validating the input data using express-validator.

此整合展示了 IronPDF 如何從已驗證的資料生成動態 PDF,express-validator 如何透過在處理之前驗證輸入來提升資料完整性。 搭配使用時,它們使開發者能夠構建安全且高效的 Node.js 應用程式,從已驗證的使用者輸入生成個性化的 PDF 文件。 這一方法除了增強應用程式安全性外,還能通過在需要時提供精確且專業策劃的文件來改善使用者體驗。

express validator npm (How It Works For Developers): Figure 7

結論

總之, express-validatorIronPDF 的結合是建立可靠 Node.js 應用程式的強大組合,該應用程式可以輕鬆管理動態 PDF 生成和輸入驗證。 express-validator 通過在處理之前強制執行必填字段、資料型別和格式的規則來簡化使用者輸入驗證過程,從而保證資料完整性。 此功能可將欺詐或不正確的資料排除在系統之外,從而提高應用程式安全性,並促進更簡單的使用者互動。

結合使用時,這些程式庫賦予開發者建立複雜、安全和直觀程式的能力。 透過使用 IronPDF 進行動態 PDF 建立和 express-validator 進行輸入驗證,開發人員可以保證程式不僅滿足嚴格的資料驗證標準,還能夠在需要時生成不錯且準確的 PDF 文件。 由於此連接,Node.js 應用程式變得總體上更可靠和更有用,這使其成為需要準確文件生成和強大資料驗證的項目的良好選擇。

我們可以透過利用 IronPDFIron Software,增加包含 OCR、條碼掃描、PDF 建立、Excel 互動和許多其他功能的 Node.js 應用程式開發工具組的功能。 借助Iron Software,開發人員可以因其高度靈活的系統和多種社群支持的插件更快地建立功能和 Web 應用程式。

IronPDF 提供了一個 免費試用 頁面。 有關如何開始使用 IronPDF 的詳細資訊,請參閱文件頁面

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

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話