📜  如何使用 Node.js 发送 JSON 响应?

📅  最后修改于: 2022-05-13 01:56:48.640000             🧑  作者: Mango

如何使用 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 代码的运行时。

方法:

  1. app.js文件顶部使用 require 关键字导入 HTTP 模块,并将返回的结果存储在 const 变量中。
  2. 现在调用 createServer()函数,它将为您提供一个 Web 服务器作为回报。稍后此服务器对象将用于侦听指定主机和端口上的连接
  3. 现在通过提供端口号、主机名和回调函数来调用函数listen()。
  4. 回调函数将在服务器成功启动或失败时执行。
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 步,我们已经成功创建了一个服务器,但目前,服务器既不会与我们交互,也不会响应我们的请求。原因是我们还没有创建请求监听器。在这一步中,我们将创建一个请求侦听器,每次有人点击服务器时都会调用它。

方法:

  1. 像我们在 javascript 中一样创建一个简单的函数,该函数将接收请求和响应对象作为参数,我们可以在其中执行任何与服务器相关的功能。
  2. 第一个 console.log() 语句只是表明我们的服务器正在工作,并且请求侦听器正在被任何请求调用。
  3. 接下来,我们准备一些随机数据作为响应发送。

应用程序.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 步:现在我们将发送响应。数据将与响应对象一起发送给用户。

方法:

  1. 在发送响应之前,在 requestListener 内部,我们从 javascript 对象创建 jsonContent,因为用于发送数据的 end()函数接收缓冲区或字符串作为数据。
  2. JSON.stringify() 是 nodejs 中的内置方法,它接受 javascript 对象并返回字符串化对象。
  3. 对 end()函数的调用向服务器表明所有进程都已完成,以便它可以将响应发送给用户。
    结束函数可以接收要与响应一起发送的数据,响应流成功完成时调用的回调函数,以及字符编码。
    在我们的例子中,我们只对发送数据感兴趣。
  4. 最后,我们在 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 格式发送响应的全部内容。