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

137
Vistas
How to get front-end data in the backend using vanilla Node Js

I know it's possible to get data sent by the user in the back-end using Express.js which is:

router.get("/pathName", async function(req, res){
  count = req.body;
})

But how to do this in vanilla (pure) Node.js itself?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Here's an example of a simple server.

const http = require('http');

http
  .createServer((req, res) => {
    res.writeHead(200, {
      'Content-Type': 'text/html',
    });
    switch (req.url) {
      // http://localhost:8080/
      case '/':
        res.write('<h1>Home</h1>');
        break;
      // http://localhost:8080/page
      case '/page':
        res.write('<h1>Page</h1>');
        break;
    }
    res.end();
  })
  .listen(8080);

Also, here's an example (probably incomplete in terms of all edge cases...) of getting JSON data from a request payload:

const http = require("http");

// server that only supports POST /count
// expects JSON data to be passed like { "count": 100 }
// must have application/json content type header and POST method

http
  .createServer(async (req, res) => {
    // ensure method is content type json, POST, and /count
    if (
      req.headers["content-type"] != "application/json" ||
      req.url !== "/count" ||
      req.method !== "POST"
    ) {
      res.writeHead(404, {
        "Content-Type": "application/json",
      });
      res.write(JSON.stringify({ message: "Unsupported route" }));
      res.end();
    }

    // try to read body
    let body;
    try {
      body = await readBody(req);
    } catch (err) {
      res.writeHead(400, {
        "Content-Type": "application/json",
      });
      res.write(JSON.stringify({ message: err.message }));
      res.end();
    }

    // try to parse body
    let parsedBody;
    try {
      parsedBody = JSON.parse(body);
    } catch (err) {
      res.writeHead(400, {
        "Content-Type": "application/json",
      });
      res.write(JSON.stringify({ message: err.message }));
      res.end();
    }

    // make sure count property is present in parsed body
    if (typeof parsedBody.count === "undefined") {
      res.writeHead(400, {
        "Content-Type": "application/json",
      });
      res.write(JSON.stringify({ message: err.message }));
      res.end();
    }

    // create response
    res.writeHead(200, {
      "Content-Type": "application/json",
    });
    res.write(JSON.stringify({ message: "Got " + parsedBody.count }));
    res.end();
  })
  .listen(8080);

function readBody(req) {
  return new Promise((res, rej) => {
    let body = "";
    req.on("data", (data) => {
      body += data;
    });
    req.on("end", () => {
      res(body);
    });
    req.on("error", (err) => {
      rej(err);
    });
  });
}

Cool to see how it works for learning. But if you're using it for a project, I'd highly recommend Express or another framework/lib as you'll find it will get quite painful to try to consider all various cases you will need. Frameworks like Express are quite light anyway.

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