跳過到頁腳內容
NODE 說明

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

透過在 Node.js 應用程式中將express-validatorIronPDF集成,可以將強大的表單驗證功能與動態 PDF 生成相結合,從而增強基於已驗證用戶輸入生成 PDF 文件的過程。 Express.js 應用程式現在可以使用 express-validator 輕鬆驗證傳入的 HTTP 請求數據,該驗證器可確保輸入在進一步處理之前滿足預定的標準。 透過此介面,開發人員可以輕鬆驗證表單輸入(例如使用者提交的資料),以便建立 PDF 報告或證書,從而確保文件建立過程中的正確性和可靠性。

開發者可以透過結合使用express-validatorIronPDF強大的 PDF 建立功能,簡化安全驗證使用者輸入和動態建立個人化 PDF 文件的流程,從而改善使用者體驗和應用程式功能。 此次合作保證了資料的完整性,同時使開發人員能夠設計靈活的應用程序,有效管理經過驗證的用戶資料並提供高品質的 PDF 輸出。

什麼是快速驗證器?

express-validator是一個用於 Node.js Web 框架 Express.js 的中間件模組,其目標是使線上應用程式中的使用者輸入資料驗證和清理更加容易和有效率。 Express 的 Validator 模組是一套完整的驗證和清理功能,開發人員可以快速將其整合到控制器和路由中。 它基於 Express.js 中間件架構建構。 開發者可以使用其聲明式和靈活的 API 來建立驗證規則,從而設定必填欄位、資料類型、長度、格式(例如電子郵件地址或 URL)和自訂驗證等條件。

! express 驗證器 npm(開發者使用方法):圖 1 - 用於 express.js 和 Node.js 應用程式的 express-validator

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. 自訂驗證器

為了滿足應用程式的獨特需求,開發人員可以設計自訂驗證和清理程序(自訂和清理方法)。 由於其適應性強,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 的詳細說明:

安裝所需軟體包

使用 npm 安裝 express 和express-validator套件:

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

建立 Express 應用程式

建立app.jsindex.js文件,並在其中配置您的 Express 應用程式。 引入所需的模組(驗證器和 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 Bad Request 回應。

啟動 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 驗證器 npm(開發者使用方法):圖 2 - 控制台輸出

如下透過 Postman 發送的請求。

! express validator npm(開發者如何使用):圖 3 - Postman 輸出:使用 Postman 工具向連接埠 3000 上的 Express.js 伺服器發送帶有資料的請求,並使用 express-validator 執行驗證。

將 express-validator 與 IronPDF 結合使用

express-validatorIronPDF可以透過結構化的方法整合到 Node.js 應用程式中,該方法可以驗證使用者輸入並根據驗證後的資料產生 PDF 文件。 以下是使用 IronPDF 和 express-validator 的逐步教學:

什麼是 IronPDF?

IronPDF 是一個功能強大的 Node.js 庫,旨在從 HTML 資料創建極其高品質的 PDF 文件。 在不犧牲原始網頁內容的前提下,它可以加快將 HTML、CSS 和其他 JavaScript 檔案轉換為格式正確的 PDF 的過程。 對於需要產生動態、可列印文件(如報表、發票和憑證)的 Web 應用程式來說,這是一個非常有用的工具。

IronPDF 的眾多功能中,可自訂頁面設定、頁首、頁腳,以及新增字體和圖像的功能只是其中的一部分。 它可以處理複雜的佈局和樣式,以確保每個測試 PDF 輸出都符合要求。 此外,IronPDF 還管理 HTML 中 JavaScript 的執行,從而實現精確的動態互動內容渲染。

! express 驗證器 npm(開發者使用方法):圖 4 - IronPDF for Node.js:Node.js PDF 庫

IronPDF 的特點

1. 從 HTML 產生 PDF

將 JavaScript、HTML 和 CSS 轉換為 PDF。 支援媒體查詢和回應式設計這兩項當代網路標準。 可用於使用 HTML 和 CSS 動態裝飾 PDF 文件、報告和帳單。

2.PDF 編輯

預先存在的 PDF 可以加入文字、照片和其他內容。 從 PDF 檔案中取出文字和圖片。 將眾多 PDF 合併為一個檔案。將 PDF 檔案分割成多個獨立的文件。 包括水印、註解、頁首和頁尾。

3. 性能和可靠性

在工業環境中,高效能和可靠度是理想的設計品質。 輕鬆管理大型文件集。

安裝 IronPDF

安裝IronPDF 包,即可取得在 node.js 專案中處理 PDF 所需的工具。

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

使用 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

當 express-validator 和 IronPDF 整合到 Node.js 應用程式中時,可以嚴格檢查使用者輸入,並使用驗證後的資料動態產生 PDF 文件。 此程式碼範例首先設定 Express.js 伺服器並匯入所需的模組,包括用於 PDF 產生的 IronPDF、用於輸入驗證的 express-validator 和用於 Web 框架功能的 express。

我們使用來自 express-validator 的主體來建立 Express 路線中的驗證標準( /generate-pdf )。 這些規則確保 POST 請求體的 title 和 content 欄位均為字串且不為空。 express-validator 使用validationResult收集驗證錯誤,如果在此過程中發生任何驗證錯誤,則傳回 400 Bad Request 回應以及驗證錯誤陣列。

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

控制台輸出

! express 驗證器 npm(開發者使用方法):圖 5

伺服器會將已建立的 PDF 檔案作為可下載檔案(application/pdf)傳回,以完成該過程。 為了方便客戶保存文件,Content-Disposition 標頭保證 PDF 文件名為"generated.pdf"。 錯誤處理用於檢測和記錄創建 PDF 時可能出現的任何問題,從而保證處理使用者請求時的穩定性和可靠性。

輸出

! express validator npm(開發者使用方法):圖 6 - Postman 輸出:使用 Postman 工具向連接埠 3000 上的 Express.js 伺服器發送帶有資料的請求,並使用 express-validator 驗證輸入資料。

此整合展示了IronPDF如何協助從已驗證的資料建立動態 PDF,以及快速驗證器如何透過在處理之前驗證輸入來提高資料完整性。 配合使用時,它們能夠幫助開發者建立安全有效的 Node.js 應用程序,根據經過驗證的使用者輸入生成客製化的 PDF 文件。 除了增強應用程式安全性外,該方法還能在需要時提供準確、專業的文檔,從而改善使用者體驗。

! express 驗證器 npm(開發者使用方法):圖 7

結論

總而言之, express-validatorIronPDF的結合是創建可靠的 Node.js 應用程式的強大組合,可以輕鬆管理動態 PDF 建立和輸入驗證。 Express-validator 透過在處理之前強制執行諸如必要欄位、資料類型和格式等規則,簡化了使用者輸入驗證過程,從而保證了資料的完整性。 此功能可防止詐欺或不準確的資料進入系統,進而提高應用程式的安全性,同時還能簡化使用者互動。

這些程式庫結合起來,使開發人員能夠創建複雜、安全且直覺的程式。 透過使用IronPDF進行動態 PDF 建立和使用express-validator進行輸入驗證,開發人員可以確保程式不僅符合嚴格的資料驗證標準,而且在需要時產生完美無瑕、精確的 PDF 文件。 正因為有了這種聯繫,Node.js 應用程式整體上更加可靠和實用,因此對於需要精確生成文件和進行強大資料驗證的專案來說,它是一個不錯的選擇。

我們可以透過利用IronPDFIron Software ,增強您的 Node.js 應用開發工具包的功能,包括 OCR、條碼掃描、PDF 創建、Excel 交互以及許多其他功能。 Iron Software擁有高度靈活的系統和豐富的社群支援插件,開發者可以藉助它更快地創建功能和 Web 應用程式。

IronPDF提供免費試用頁面。 有關如何開始使用 IronPDF 的詳細信息,請參閱文件頁面

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。