Gestionar parámetros POST con Node.js

Llamamos parámetros POST a aquellos que son enviados desde la web cliente al servidor sin hacer uso del envío por url, al contrario que los parámetros GET. Si alguna vez os habéis planteado cómo enviar parámetros POST por Node.js en este artículo os vamos a enseñar cómo llevarlo a cabo. Haremos también uso de Express para que nos sea mucho más sencillo el desarrollo.

Lo primero que tenemos que saber es que los parámetros POST se envían en el cuerpo mismo de la petición y no dentro de la url tal y como hacen los GET. Cuando un servidor recibe un paramtro POST lo hace tal que así:

application/x-www-form-urlencoded

A partir de aquí, los parámetros tanto GET como POST tienen el mismo formato:

var1=x&var2=y&var3=z

Al utilizar Express contamos con un middleware que se llama body-parser, que nos ayudará a acceder al contenido del cuerpo de las peticiones.

Si queremos instalar el middleware body-parser en nuestro proyecto tendremos que hacerlo mediante npm.

$ npm install body-parser

Así que, antes de empezar, asegúrate de cargar los middleware de Express y de body-parser.

var express = require('express');
var body_parser = require('body-parser');

Ahora solo tenemos que definir la aplicación Express

var app = express();

A continuación, utilizamos el body-parser del middleware

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

Con esto ya tendremos inicializados los contenidos externos que vamos a utilizar para esta práctica, pero nos falta implementar el código. Para este tutorial utilizaremos la ruta /nacimiento para poder manejar las peticiones que nos vengan. En ese directorio vamos a usar las peticiones GET para mostrar el formulario el cual va a hacer la petición POST, y la petición POST para recuperar los valores introducidos por el usuario.

Como hemos dicho antes, mediante el método .get manejaremos los parámetros GET.

var formulario = '<form method="post" action="/nacimiento">'
    + '<label for="edad">¿Qué edad tienes?</label>'
    + '<input type="text" name="edad" id="edad">'    
    + '<input type="submit" value="Enviar"/>'
    + '</form>';
 
var cabecera = '<h1>Naciste el año</h1>';
 
app.get('/nacimiento', function (req, res) {
 
    res.send('<html><body>'
            + cabecera
            + formulario
            + '</html></body>'
    );
 
});

Si os habéis fijado, el método .get recibe dos parámetros: req, res, que son la request y la response, respectivamente. En el parámetro response devolvemos el contenido de la respuesta, que si os habéis dado cuenta en el código anterior es el mismo formulario. Dicho formulario enviará el valor de los campos a través del método post.

Para manejar los parámetros POST haremos uso del método .post

app.post('/nacimiento', function (req, res) {
 
    var edad = req.body.edad || '';
    var nacimiento = '';
 
    if (edad != '')
        nacimiento = 2015 - edad;
 
    res.send('<html><body>'
            + cabecera
            + '<p>' + nacimiento + '</p>'
            + formulario
            + '</html></body>'
    );
 
});

Para recuperar el valor de los parámetros enviados por POST utilizaremos el middleware body-parser. El código que tendremos que utilizar para acceder a estas variables será:

req.body.nombrevariable

Para este caso, como queremos acceder a la variable enviada por el campo edad, utilizaremos:

var nombre = req.body.edad || '';

Si te fijas hemos utilizado || para darle un valor de vacío en el caso de que no nos venga nada por POST respecto a ese parámetro. Si queremos devolver el contenido tendremos que utilizar el elemento response al igual que hemos hecho antes con .get.

Para comprobar que funciona, arranca el servidor y ejecuta la prueba que acabamos de implemetar para enviar parámetros POST con Node.js y Express.

var server = app.listen(8000, function () {
	  console.log('Servidor ejecutandose en localhost:8000');
});

Y este ha sido el artículo en el que trataba explicaros como gestionar parámetros POST con Node.js, esperamos que te haya gustado y sepas aplicarlo en tus futuros proyectos. Ya sabes que si nos quieres proponer un tema que quieres ver reflejado como un tutorial o como una práctica, solo tienes que hacer uso del área de comentarios de un poco más abajo. Por el contrario, si quieres enviarnos tus propios tutoriales, puedes hacerlo a través de la intranet de usuarios que está habilitada para ello, a través del menú Enviar Tutorial. Ya sabes, ayúdanos a crecer con tus conocimientos. ¡Un saludo y feliz código!

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP