節點幫助

body parser node(對開發人員的運作原理)

發佈 2024年9月29日
分享:

介紹

Node.js 是一個基於 Chrome V8 JavaScript 引擎的強大 JavaScript 執行環境,其事件驅動、非阻塞 I/O 架構已完全改變了伺服器端網頁開發。 解析傳入的請求正文是在使用 Node.js 快速處理 HTTP 請求的過程中常見的一步,這對於網頁開發和開發可靠的網頁應用程式至關重要。 body-parser 中介軟體在這種情況下很有用。

Body-parser 是一個著名的 Node.js 框架 Express.js 的中介軟體,它能夠簡化解析進入的請求主體過程,讓您更容易訪問和修改客戶端傳送的數據。 Body-parser 中介軟體提供了一種高效的方法來處理不同的內容類型,如 JSON 負載、URL 編碼的表單或原始文本,以便您的應用程式可以高效地處理使用者輸入。

另一方面, IronPDF 是一個強大的 PDF 生成庫,用於 Node.js。 它讓開發者能夠輕鬆地以程式化方式創建、編輯和操作 PDF 文件。 結合 body-parser 與 IronPDF,為需要處理使用者輸入並根據這些資料生成動態 PDF 文件的網頁應用程式開啟了無限的可能性。

在本文中,我們將探討如何將 body-parser 與 Node.js 整合,以處理 HTTP 請求,並隨後使用 IronPDF 從已解析的 body 物件生成 PDF 文件。 這種組合特別適用於需要自動生成報告、創建發票或任何需要動態 PDF 內容的應用程序。

body parser node(對開發者的運作方式):圖1 - Body-parser 網頁

Body Parser的關鍵功能

JSON 解析

解析以 JSON 格式的請求主體,使得在 API 中使用這些主體解析器處理 JSON 數據變得簡單。

URL 編碼資料解析

解析使用 URL 編碼的數據,通常在 HTML 表單提交中發現。 支持基本和複雜的物件結構。

原始數據解析

解析傳入請求的原始二進制數據,有助於管理獨特的數據格式和非標準內容類型。

文本資料解析

解析傳入的純文字資料請求,使基於文字的內容處理變得簡單。

可配置的大小限制

啟用請求主體大小限制,以防止大量負載超載伺服器。 這有助於提高安全性並控制資源使用。

自動內容類型檢測

透過自動識別和處理相同類型的選項、請求物件類型選項以及依據 Content-Type 標頭的主體,更有效地處理不同類型的內容,消除人工互動的需求。

錯誤處理

強大的錯誤處理功能,確保應用程序能夠禮貌地應對引起問題的請求,例如無效的媒體格式、格式錯誤的JSON或過大的數據內容。

與其他中介軟體的整合

通過與現有的 Express 中介軟體無縫整合,允許模組化和組織良好的中介軟體堆疊。 這提高了應用程式的可維護性和靈活性。

擴展配置選項

提供更多配置選項來改變解析過程的行為,例如修改文本解析的編碼類型或定義URL編碼數據的處理深度。

性能優化

有效管理解析操作,降低性能開銷,並確保程式和代碼即使在重載情況下也能保持響應。

創建和配置 Body parser node js

在 Node.js 應用程式中使用 Express.js 建立和設置 Body Parser

安裝 Express 和 Body Parser

使用這些 npm 命令在命令行中安裝 Express 和 Body Parser 套件:

npm install express 
npm install body-parser
npm install express 
npm install body-parser
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install express npm install body-parser
VB   C#

建立和配置應用程式

在您的專案目錄中,建立一個名為 app.js 的新 js 檔案,並為 Express 應用程式的主體配置 body-parser 中介軟體:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// Use body-parser middleware to parse JSON and URL-encoded data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Example route that handles POST requests using the req .body property
app.post('/submit', (req, res) => {
  const data = req.body;
  res.send(`Received data: ${JSON.stringify(data)}`);
});
// Start the server
const PORT = process.env.PORT 
 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// Use body-parser middleware to parse JSON and URL-encoded data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Example route that handles POST requests using the req .body property
app.post('/submit', (req, res) => {
  const data = req.body;
  res.send(`Received data: ${JSON.stringify(data)}`);
});
// Start the server
const PORT = process.env.PORT 
 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require( 'express');
const bodyParser = require( 'body-parser');
const app = express()
' Use body-parser middleware to parse JSON and URL-encoded data
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended:= True }))
' Example route that handles POST requests using the req .body property
app.post( '/submit', (req, res) =>
If True Then
	const data = req.body
	res.send(`Received data:= ${JSON.stringify(data)}`)
End If
)
' Start the server
const PORT = process.env.PORT 3000
app.listen(PORT, Sub()
	console.log(`TypeOf Server Is running on port ${PORT}`)
End Sub)
VB   C#

處理不同內容類型

此外,我們可以設置一個 Body Parser 來處理多種類型的資料,包括純文字或原始二進位格式的資料,來自:

原始數據解析

app.use(bodyParser.raw({ type: 'application/octet-stream' }));
app.use(bodyParser.raw({ type: 'application/octet-stream' }));
app.use(bodyParser.raw({ type: 'application/octet-stream' }));
VB   C#

文本數據解析

app.use(bodyParser.text({ type: 'text/plain' }));
app.use(bodyParser.text({ type: 'text/plain' }));
app.use(bodyParser.text({ type: 'text/plain' }));
VB   C#

錯誤處理

處理錯誤的中介軟體可以用來管理在正文解析過程中可能出現的問題。

app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send('Invalid request body');
  } else {
    next();
  }
});
app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send('Invalid request body');
  } else {
    next();
  }
});
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
app.use((err, req, res, [next]) =>
If True Then
	If err Then
		res.status(400).send( 'Invalid request body');
	Else
		[next]()
	End If
End If
)
VB   C#

開始使用 IronPDF

什麼是 IronPDF?

body parser node(對開發人員的運作方式):圖 2 - IronPDF 網頁

IronPDF,開發人員可以以程式的方式生成、修改和操作 PDF 文件。 IronPDF 是一個功能強大的 PDF 生成庫,用於 Node.js,支援多種功能,包括樣式設計、腳本編寫和複雜的佈局,這使得將 HTML 資料轉換為 PDF 的過程更加簡單。

使用 IronPDF,可以直接從網路應用程式生成動態報告、發票和其他文件。 這是一個靈活的解決方案,適用於任何需要 PDF 功能的應用程式,因為它可以輕鬆與 Node.js 和其他框架交互。 IronPDF 是開發者依賴的工具,因為它的功能豐富且易於使用,適合用於 PDF 建立和修改。

IronPDF 主要功能

將 HTML 轉換為 PDF

在將 HTML 內容轉換為 PDF 文件時,支持複雜的佈局、CSS 和 JavaScript。 使開發人員能夠使用現有的網頁模板創建PDF。

進階渲染選項

提供頁碼、頁腳和頁首選項。 支援浮水印、背景圖片和其他複雜的版面配置元素。

編輯和操作 PDF 文件

允許在現有的 PDF 文件中進行頁面修改、頁面合併和頁面分割。 啟用 PDF 中頁面的新增、刪除或重新排列。

安裝 IronPDF

若要啟用 IronPDF 功能,請使用 Node.js 的 node package manager 安裝必要的套件。

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
VB   C#

使用 IronPDF 建立報告 PDF

在 Node.js 中,IronPDF 與 Body Parser 協同運作,使開發者能夠處理請求數據並高效生成動態 PDF 文件。 這是一個詳細的指南,介紹如何在 Node.js 應用程式中配置和利用這些功能。

使用 Body Parser 和 IronPDF 建立 Express 應用程式,然後創建一個名為 app.js 的檔案。

const express = require('express');
const bodyParser = require('body-parser');
const IronPdf = require("@ironsoftware/ironpdf");
const app = express();
// Middleware to parse JSON and URL-encoded data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Route to handle PDF generation
app.post('/generate-pdf', async (req, res) => {
  const data = req.body;
  // HTML content to be converted into PDF
  const htmlContent = `
    <html>
    <head>
    </head>
    <body>
      <h1>${JSON.stringify(data, null, 2)}</h1>
    </body>
    </html>
  `;
  try {
    // Create an instance of IronPDF
    const document=IronPdf.PdfDocument;
    // Convert HTML to PDF
    const pdf = await document.fromHtml(htmlContent);
    let pdfbuff= await pdf.saveAsBuffer();
    // Set response headers to serve the PDF
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=generated.pdf');
    // Send the PDF as the response
    res.send(pdfbuff);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).send('Error generating PDF');
  }
});
// Start the server
const PORT = process.env.PORT 
 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const bodyParser = require('body-parser');
const IronPdf = require("@ironsoftware/ironpdf");
const app = express();
// Middleware to parse JSON and URL-encoded data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Route to handle PDF generation
app.post('/generate-pdf', async (req, res) => {
  const data = req.body;
  // HTML content to be converted into PDF
  const htmlContent = `
    <html>
    <head>
    </head>
    <body>
      <h1>${JSON.stringify(data, null, 2)}</h1>
    </body>
    </html>
  `;
  try {
    // Create an instance of IronPDF
    const document=IronPdf.PdfDocument;
    // Convert HTML to PDF
    const pdf = await document.fromHtml(htmlContent);
    let pdfbuff= await pdf.saveAsBuffer();
    // Set response headers to serve the PDF
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=generated.pdf');
    // Send the PDF as the response
    res.send(pdfbuff);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).send('Error generating PDF');
  }
});
// Start the server
const PORT = process.env.PORT 
 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
Private const express = require( 'express');
Private const bodyParser = require( 'body-parser');
Private const IronPdf = require("@ironsoftware/ironpdf")
Private const app = express()
' Middleware to parse JSON and URL-encoded data
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended:= True }))
' Route to handle PDF generation
app.post( '/generate-pdf', async(req, res) =>
If True Then
	const data = req.body
	const htmlContent = ` (Of html) (Of head) </head> (Of body) (Of h1) $
	If True Then
		JSON.stringify(data, Nothing, 2)
	End If
	</h1> </body> </html> `
	Try
		const document=IronPdf.PdfDocument
		const pdf = Await document.fromHtml(htmlContent)
		Dim pdfbuff As let= Await pdf.saveAsBuffer()
		res.setHeader( 'Content-Type', 'application/pdf');
		res.setHeader( 'Content-Disposition', 'attachment; filename=generated.pdf');
		res.send(pdfbuff)
	Catch e1 As [error]
		console.error( '@Error generating PDF:', @error);
		res.status(500).send( '@Error generating PDF');
	End Try
End If
)
' Start the server
const PORT = process.env.PORT 3000
app.listen(PORT, Sub()
	console.log(`TypeOf Server Is running on port ${PORT}`)
End Sub)
VB   C#

在此配置中,IronPDF 用於生成 PDF,同時結合了 Node.js Body Parser 的功能。 首先,我們匯入所需的模組,例如用於 PDF 生成的 IronPDF,用於解析傳入請求正文的 Body Parser,以及用於伺服器構建的 Express。 接下來,我們使用 Body Parser 設定 Express 中介軟體來解析 JSON 和 URL 編碼的表單數據。

要處理 POST 請求,我們建立一個名為 generate-pdf 的路由,我們只接收 URL 請求主體的內容。 這個 JSON 格式的數據被整合到一個 HTML 模板中,該模板將用作 PDF 的內容。 我們實例化一個渲染器並將新 body 物件的 HTML 內容轉換成一個 PDF 文件 使用 IronPDF。

在成功生成 PDF 後,我們將請求作為響應發送,並設置請求和響應標頭以指示檔名和內容類型。 錯誤處理確保在創建 PDF 時出現的任何問題都被識別、記錄,並以相關的狀態代碼傳達給客戶。

輸出

body parser node(對開發人員的運作方式):圖3 - 從前面的代碼範例輸出的PDF

最後,伺服器已啟動並正在指定的端口上等待傳入的請求。 透過這種配置,使用 Body Parser 進行請求處理和使用 IronPDF 進行動態 PDF 生成可以輕鬆集成到 Node.js 應用程序中,從而實現更有效的數據處理工作流程、HTTP 解析 JSON 請求對象和文件生成。

結論

body parser node(對開發人員的運作方式):圖4 - IronPDF for Node.js 授權頁面

總結來說,這個結合 IronPDF 在 Node.js 中,Body Parser 提供了一種穩定的方法來管理 HTTP 請求的正文數據,並創建用於線上應用程式的動態 PDF 文件。 開發人員可以更輕鬆地訪問和修改傳入數據,因為 Body Parser 可簡化解析不同類型請求主體的過程。

與此同時,IronPDF 具備強大的能力,可以從 HTML 文本製作具有高級功能、格式和樣式的高品質 PDF 文件。 開發人員可以通過結合這些技術,更快速地根據應用程式資料或使用者輸入生成自訂的 PDF 文件。 透過此整合,Node.js 應用程式現在可以更有效地處理用戶生成的內容,並輸出專業外觀的 PDF。

透過將 IronPDF 和 Iron Software 產品整合到您的開發棧中,我們可以為客戶和最終使用者提供功能豐富、高端的軟體解決方案。 此外,這將有助於專案和流程的優化。 IronSoftware 價格從 $749 起,因其豐富的文檔活躍的社區和頻繁的升級,成為現代軟體開發項目的可靠合作夥伴。

< 上一頁
BPMN JS npm(開發者如何運作)
下一個 >
Ramda JS NPM(對開發人員的運作方式)

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

免費 npm 安裝 查看許可證 >