¿Cómo enviar una respuesta JSON usando Node.js?

NodeJS es el entorno de tiempo de ejecución, que puede ejecutar el código javascript en cualquier plataforma. Es ampliamente utilizado para crear y ejecutar servidores de aplicaciones web debido a sus características más destacadas. Durante la producción, varias veces necesitamos enviar los recursos o algún tipo de información como respuesta, y la sintaxis de notación de objetos javascript (JSON) se usa ampliamente para enviar datos y también se usa para la comunicación entre dos aplicaciones. En este artículo vamos a ver cómo podemos enviar información al usuario como JSON a través de un servidor node.js. NodeJS contiene un módulo HTTP incorporado, se usa para transferir datos a través del protocolo HTTP y admite muchas funciones que son útiles para cualquier aplicación web.

Veamos la implementación paso a paso.

Paso 1: Crea una aplicación NodeJS

Escriba este comando en su terminal y creará una aplicación de Node. Este comando también solicitará algunas configuraciones para esta aplicación, que es bastante simple de proporcionar. Como otra opción, puede usar el indicador -y después de npm init para las configuraciones predeterminadas.

npm init

Paso 2: crea un archivo Javascript y lo llamaremos app.js , puedes nombrarlo como quieras. En este archivo, escribiremos todo nuestro código.

Estructura del proyecto: Ahora nuestra estructura de directorios se verá como la siguiente.

Paso 3: ahora vamos a crear un servidor back-end, más claramente, crear un servidor no es más que escribir unas pocas líneas de código y llamar a las funciones integradas de nodejs. Simplemente crea un tiempo de ejecución que ejecuta código javascript en la máquina.

Acercarse:

  1. Importe el módulo HTTP con la palabra clave require en la parte superior del archivo app.js y almacene el resultado devuelto en una variable const.
  2. Ahora llame a la función createServer(), le proporcionará un servidor web a cambio. Posteriormente, este objeto de servidor se usará para escuchar la conexión en un host y un puerto específicos.
  3. Ahora llame a la función listen() proporcionando el número de puerto, el nombre de host y la función de devolución de llamada.
  4. La función de devolución de llamada se ejecutará en el inicio exitoso del servidor o en caso de falla.

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 Occurred");
});

Salida: use el comando node app.js en su terminal para ejecutar el servidor. Algo como esto se mostrará en su terminal en el inicio exitoso.

Paso 4: Cree un detector de requests. Hasta el paso 3, hemos creado con éxito un servidor, pero actualmente, el servidor no interactuará con nosotros ni responderá a nuestra solicitud. La razón es que aún no hemos creado los oyentes de requests. En este paso, vamos a crear un oyente de solicitud, se llama cada vez que alguien accede al servidor.

Acercarse:

  1. Cree una función simple como lo hacemos en javascript, y esta función recibirá el objeto de solicitud y respuesta como un parámetro, y podemos realizar cualquier funcionalidad relacionada con el servidor dentro de esto.
  2. La primera declaración de console.log() es solo para indicar que nuestro servidor está funcionando y se llama al detector de requests en cualquier solicitud.
  3. A continuación, estamos preparando algunos datos aleatorios para enviar como respuesta.

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"
  }
};

Paso 5: Ahora enviaremos la respuesta. Los datos se enviarán junto con el objeto de respuesta al usuario. 

Acercarse:

  1. Dentro de requestListener antes de enviar una respuesta, estamos creando un jsonContent a partir de un objeto javascript porque la función end() que se usará para enviar datos recibe un búfer o una string como datos.
  2. El JSON.stringify() es el método incorporado en nodejs, acepta un objeto javascript y devuelve el objeto en string.
  3. La función call to end() indica al servidor que todos los procesos han finalizado para que pueda enviar la respuesta al usuario.
    La función final puede recibir datos para enviar junto con la respuesta, la función de devolución de llamada que se llama cuando el flujo de respuesta finaliza correctamente y la codificación de caracteres.
    En nuestro caso, sólo nos interesa el envío de los datos.
  4. Finalmente, hemos pasado el detector de requests dentro de createServer(), de modo que cada solicitud al servidor pueda llamar a esta funcionalidad dentro del detector de requests.

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!");
});

Paso para ejecutar la aplicación: Abra la terminal y escriba el siguiente comando.

node app.js

Salida: esta es la respuesta JSON de la solicitud. Si abrimos la sección de red de la herramienta de desarrolladores de Chrome, podremos ver la respuesta real del servidor.

Así que todo se trataba de enviar respuestas como JSON desde el servidor NodeJS. 

Publicación traducida automáticamente

Artículo escrito por mrtwinklesharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *