在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
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 fetch 是一个将 Fetch API 引入 Node.js 的模块。 Fetch API 是一个用于发起 HTTP 请求的现代接口,常用于网页浏览器中。 Node.js fetch 复制了此功能,使 Node.js 应用程序能够以同样的便捷性和简单性执行 HTTP 请求。 这使它成为那些已经熟悉 Fetch API 的开发人员或那些正在寻找一种简单方式来处理其 Node.js 应用程序中 HTTP 请求的开发人员的绝佳选择。
Node.js fetch 模拟浏览器中的 Fetch API,为开发人员提供一个简单且熟悉的接口。
类似于 Fetch API,Node.js fetch 是基于 Promise 的,使开发人员能够以更可读和易于管理的方式编写异步代码。
Node.js fetch 是一个极简的库,使其快速且高效。 它没有较大型HTTP库的开销,保持您的应用程序轻量化。
Node.js fetch 支持多种 HTTP 方法、头和响应类型,具有很高的灵活性。
它支持流式响应,这对于高效处理大型负载非常有用。
入门 Node-fetch,您需要通过 npm 安装它。 (节点软件包管理器). 在你的项目目录中运行以下命令:
npm install node-fetch
npm install node-fetch
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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);
});
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);
});
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import fetch from 'node-fetch'; import fs from 'fs'; const url = 'https: 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); });
此代码片段演示了一个简单的GET请求来从API获取JSON数据。 fetch 函数返回一个承诺,该承诺解析为响应对象。 然后,您可以调用返回响应的方法,例如 json()**解析响应主体。
Node.js fetch 还支持更多高级功能,例如,进行 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);
});
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);
});
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import fetch from 'node-fetch'; import fs from 'fs'; const url = 'https: const data = { key: 'value' }; fetch(url, { method: 'POST', 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); });
此示例展示如何使用 JSON 负载发送 POST 请求对象。 headers 选项用于指定新响应的内容类型,body 选项包含序列化的 JSON 数据。
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);
});
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);
});
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import fetch from 'node-fetch'; import fs from 'fs'; const url = 'https: 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); });
在此示例中,响应主体作为文件流传输到服务器,展示了如何高效处理大型响应。
在处理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);
});
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);
});
fetch(url).then(Function(response)
If Not response.ok Then
Throw New [Error](`HTTP [error](Not status):= ${response.status}`)
End If
Return response.json()
End Function).then(Sub(data)
console.log(data)
End Sub).catch(Function([error]) {console.error(})
如果响应头状态不在 200-299 范围内,则会抛出错误,并且 catch 块会处理请求过程中发生的任何错误,否则将返回有效的 JSON 响应。
Node fetch 是 Node.js 生态系统中用于进行 HTTP 获取请求的流行库。 结合时 IronPDF强大的PDF生成库,它成为从各种网络资源创建PDF的多功能工具。
IronPDF 是一个强大的库,允许开发人员以简单高效的方式创建、编辑和提取PDF内容。 适用于 C#、Python、Java 和 Node.js,IronPDF 通过其直观的 API 使 PDF 操作变得简单。
首先,您需要安装 IronPDF 在您的项目中。 使用以下 npm 命令安装这些库:
npm i @ironsoftware/ironpdf
npm i @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm i @ironsoftware/ironpdf
让我们探讨如何使用Node.js fetch与IronPDF结合生成来自网络内容源的PDF文件。
您可以利用 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!");
})();
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!");
})();
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import fetch from 'node-fetch'; import { PdfDocument } from '@ironsoftware/ironpdf'; (async() => { const apiUrl = "https://jsonplaceholder.typicode.com/posts"; const response = await fetch(apiUrl); const data = await response.json(); 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> `; const pdfFromHtmlString = await PdfDocument.fromHtml(htmlContent); await pdfFromHtmlString.saveAs("dynamic_report.pdf"); console.log("PDF generated from API data successfully!"); })();
JSON 响应输出被优雅地映射到 HTML 表格,IronPDF 准确地转换了其所有样式。
有关更多详细信息,请访问 IronPDF 及其功能,请参考此 文档页面.
Node fetch 是一个功能强大且简单的工具,用于在Node.js中发起HTTP请求。 其熟悉的API、基于Promise的方法以及轻量级特性使其成为初学者和有经验的开发者的优秀选择。 无论您是执行基本的 GET 请求还是处理带有自定义头的复杂 POST 请求,Node fetch 都提供了一种与 Web API 交互的简洁高效的方法。
组合 Node fetch 与 IronPDF 提供了一种强大且灵活的方式,可以从Node.js中的各种网页内容源生成PDF。 通过集成这两个库,您可以轻松创建利用网络数据并生成专业 PDF 的强大应用程序。
IronPDF 起价为 $749。免费体验其强大的 PDF 生成功能。 今天就试试,亲自感受不同之处。!