es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedo obtener el texto completo de la respuesta HTTP en Node.js desde la respuesta de un módulo HTTP .get?

Tengo un servidor web muy simple:

const ws = require('http');

ws.createServer(
    function(req,res)
    {
        console.log('solicitud recibida');
        res.write('Hola mundo');
        res.end();
    })
    .listen(1234);

El servidor funciona. Cuando abro el navegador en localhost:1234, obtengo el texto “Hola mundo”. Cuando envío un GET a localhost:1234 desde un cliente REST, obtengo:

HTTP/1.1 200 OK
Fecha: vie, 03 dic 2021 20:10:12 GMT
Conexión: cerrar
Transfer-Encoding: chunked

Hola mundo

Ahora, me gustaría escribir una prueba, pero estoy teniendo dificultades para encontrar una forma de extraer el texto “Hola mundo” de la respuesta. En este momento, mi código de prueba se ve así:

const http = require('http');

let req = http.get('http://localhost:1234',(res)=>{
    let txt = res.read();
    console.log(txt);
});

Esto siempre retorna null.

También he intentado:

const http = require('http');

let req = http.get('http://localhost:1234',(res)=>{
    let data = [];
    res.on('data',(chunk)=>data.push(chunk));
    console.log(data);
});

Esto retorna un arreglo vacío.

Cuando depuro y observo el objeto res, es fácil encontrar todo en la respuesta (principalmente en res.headers) excepto el texto “Hola mundo”. He visto muchos ejemplos para extraer datos enviados en formato JSON, etc., pero quiero comenzar con el ejemplo más simple posible (solo texto plano) y no puedo encontrar ninguna forma de hacerlo. Parece que cualquier cosa que el navegador pueda devolver debería estar disponible cuando envío un GET a través del módulo HTTP, pero no puedo encontrarlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Cómo extraer “Hola mundo” de una respuesta del servidor utilizando Node.js

    Para extraer el texto “Hola mundo” de la respuesta de un servidor web Node.js, puedes utilizar el evento data del objeto de respuesta. Aquí tienes un ejemplo:

    const http = require('http');
    
    let req = http.get('http://localhost:1234', (res) => {
      let data = '';
      res.on('data', (chunk) => {
        data += chunk;
      });
      res.on('end', () => {
        console.log(data);
      });
    });
    

    En este ejemplo, escuchamos el evento data del objeto de respuesta y concatenamos cada fragmento de datos a una variable de tipo string. Cuando se dispara el evento end, hemos recibido la respuesta completa y podemos imprimir la variable data en la consola.

    Utilizando esta técnica, deberías ver el texto “Hola mundo” en la salida del script de prueba.

Comments are closed.