Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
La solicitud HTTP tiene un cuerpo vacío

Estoy creando un programa cliente-servidor simple usando Node y Express. El programa debe poder aceptar una entrada JSON en el lado del cliente, realizar alguna lógica y luego pasar información al lado del servidor.

Actualmente puedo proporcionar información al cliente con éxito, sin embargo, el lado del servidor simplemente devuelve {} al enviar request.body a la consola después de realizar un POST desde el lado del cliente.

cliente.js:

 const clientPort = 9300; const serverPort = 9400; var express = require('express'); var http = require('http'); var app = express(); app.use(express.json()); // json callback app.post('/api', function(request, response) { console.log(`api callback`); // log the received json var input = request.body; console.log(`Received JSON: ${JSON.stringify(input)}`); var options = { host: 'localhost', port: serverPort, path: '/', method: 'POST', header: { 'Content-Type': 'application/json' } }; const httpReq = http.request(options, function(response) { response.setEncoding('utf8'); response.on('data', (chunk) => { console.log(`BODY: ${chunk}`); }); response.on('end', () => { console.log('No more data in response.'); }); }); // write word to request httpReq.write(JSON.stringify(input)); httpReq.end(); }); // listen on port 9300 for inputs app.listen(clientPort, 'localhost', () => { console.log(`Client listening on port ${clientPort}...`); });

servidor.js:

 const serverPort = 9400; var express = require('express'); var app = express(); app.use(express.json()); // expect to receive the JSON input app.post('/', function(request, response) { console.log(`server callback`); console.log(JSON.stringify(request.body)); }); // listen on port 9400 for inputs from client app.listen(serverPort, 'localhost', () => { console.log(`Server listening on port ${serverPort}...`); });

Ejemplo de entrada:

 curl --header "Content-Type: application/json" \  INT ✘  11s  --request POST \ --data '{"word":"test"}' \ http://localhost:9300/api

Salida de client.js (basada en la entrada anterior):

 Client listening on port 9300... api callback Received JSON: {"word":"test"}

Finalmente, la salida server.js:

 Server listening on port 9400... server callback {}
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debe usar el middleware express urlencoded para que pueda interpretar el objeto del cuerpo en su solicitud.

Debajo app.use(express.json()); pon la siguiente linea

 app.use(express.urlencoded({ extended: true }));

Más información aquí: https://www.geeksforgeeks.org/express-js-express-urlencoded-function/

about 4 years ago · Juan Pablo Isaza Denunciar

0

Todo lo que tenía que hacer era reemplazar el header en var options con headers .

Voy a ir a darme una bofetada en la cara.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda