如何使用 Node.js 发送 JSON 响应?
NodeJS 是运行时环境,可以在任何平台上执行 javascript 代码。由于其突出的特性,它被广泛用于创建和运行 Web 应用程序服务器。在生产过程中,我们需要多次发送资源或某种类型的信息作为响应,而 JavaScript 对象表示法 (JSON) 语法被广泛用于发送数据,也用于任何两个应用程序之间的通信。在本文中,我们将了解如何通过 node.js 服务器将信息以 JSON 格式发送给用户。 NodeJS 包含一个内置的 HTTP 模块,它用于通过 HTTP 协议传输数据,并支持对任何 Web 应用程序有用的许多功能。
让我们看一步一步的实现。
第 1 步:创建 NodeJS 应用程序
在您的终端中编写此命令,它将创建一个节点应用程序。此命令还将要求此应用程序的一些配置,这很容易提供。作为另一种选择,您可以在npm init之后使用-y标志进行默认配置。
npm init
第 2 步:创建一个 Javascript 文件,我们将其命名为app.js ,您可以随意命名。在这个文件中,我们将编写整个代码。
项目结构:现在我们的目录结构将如下所示。
第三步:现在我们要创建一个后端服务器,更明确地说,创建一个服务器就是写几行代码,调用nodejs的内置函数。它只是创建一个在机器上执行 javascript 代码的运行时。
方法:
- 在app.js文件顶部使用 require 关键字导入 HTTP 模块,并将返回的结果存储在 const 变量中。
- 现在调用 createServer()函数,它将为您提供一个 Web 服务器作为回报。稍后此服务器对象将用于侦听指定主机和端口上的连接
- 现在通过提供端口号、主机名和回调函数来调用函数listen()。
- 回调函数将在服务器成功启动或失败时执行。
app.js
const http = require('http');
const server = http.createServer();
server.listen(3000,'localhost', function(error){
if(!error)
console.log("Server is Listening at Port 3000!");
else
console.log("Error Occured");
});
app.js
const requestListener = (req, res)=>{
console.log("Request is Incoming");
const responseData = {
message:"Hello, GFG Learner",
articleData:{
articleName: "How to send JSON response from NodeJS",
category:"NodeJS",
status: "published"
},
endingMessage:"Visit Geeksforgeeks.org for more"
}
};
app.js
const http = require('http');
const requestListener = (req, res)=>{
console.log("Request is Incoming");
const responseData = {
message:"Hello, GFG Learner",
articleData:{
articleName: "How to send JSON response from NodeJS",
category:"NodeJS",
status: "published"
},
endingMessage:"Visit Geeksforgeeks.org for more"
}
const jsonContent = JSON.stringify(responseData);
res.end(jsonContent);
};
const server = http.createServer(requestListener);
server.listen(3000,'localhost', function(){
console.log("Server is Listening at Port 3000!");
});
输出:使用 终端中的node app.js命令来运行服务器。成功启动后,您的终端将显示类似的内容。
第 4 步:创建请求侦听器。直到第 3 步,我们已经成功创建了一个服务器,但目前,服务器既不会与我们交互,也不会响应我们的请求。原因是我们还没有创建请求监听器。在这一步中,我们将创建一个请求侦听器,每次有人点击服务器时都会调用它。
方法:
- 像我们在 javascript 中一样创建一个简单的函数,该函数将接收请求和响应对象作为参数,我们可以在其中执行任何与服务器相关的功能。
- 第一个 console.log() 语句只是表明我们的服务器正在工作,并且请求侦听器正在被任何请求调用。
- 接下来,我们准备一些随机数据作为响应发送。
应用程序.js
const requestListener = (req, res)=>{
console.log("Request is Incoming");
const responseData = {
message:"Hello, GFG Learner",
articleData:{
articleName: "How to send JSON response from NodeJS",
category:"NodeJS",
status: "published"
},
endingMessage:"Visit Geeksforgeeks.org for more"
}
};
第 5 步:现在我们将发送响应。数据将与响应对象一起发送给用户。
方法:
- 在发送响应之前,在 requestListener 内部,我们从 javascript 对象创建 jsonContent,因为用于发送数据的 end()函数接收缓冲区或字符串作为数据。
- JSON.stringify() 是 nodejs 中的内置方法,它接受 javascript 对象并返回字符串化对象。
- 对 end()函数的调用向服务器表明所有进程都已完成,以便它可以将响应发送给用户。
结束函数可以接收要与响应一起发送的数据,响应流成功完成时调用的回调函数,以及字符编码。
在我们的例子中,我们只对发送数据感兴趣。 - 最后,我们在 createServer() 内部传递了请求侦听器,以便对服务器的每个请求都可以在请求侦听器内部调用此功能。
应用程序.js
const http = require('http');
const requestListener = (req, res)=>{
console.log("Request is Incoming");
const responseData = {
message:"Hello, GFG Learner",
articleData:{
articleName: "How to send JSON response from NodeJS",
category:"NodeJS",
status: "published"
},
endingMessage:"Visit Geeksforgeeks.org for more"
}
const jsonContent = JSON.stringify(responseData);
res.end(jsonContent);
};
const server = http.createServer(requestListener);
server.listen(3000,'localhost', function(){
console.log("Server is Listening at Port 3000!");
});
运行应用程序的步骤:打开终端并键入以下命令。
node app.js
输出:这是请求的 JSON 响应。如果我们打开 chrome 开发者工具的网络部分,我们将能够看到来自服务器的实际响应。
这就是从 NodeJS 服务器以 JSON 格式发送响应的全部内容。