Parámetros POST con Node.js y Express

15/Ago/2015 NodeJS Deja un comentario

Los parámetros POST son aquellos que se envían desde la página web al servidor sin que sean visibles en la URL. En el ejemplo de hoy vamos a ver como podemos pasar parámetros POST con Node.js y Express.

Lo primero que deberemos de conocer es que los parámetros POST no se envían en la URL si no que se envían en el cuerpo de la petición. Siendo el tipo de petición recibida por los servidores como application/x-www-form-urlencoded. Si bien el formato de los parámetros es el mismo que el utilizado por los parámetros GET.

parametro1=valor1&parametro2=valor2

En el caso de Express se cuenta con un middleware llamado body-parser el cual nos ayudará a acceder al contenido del cuerpo de los mensajes.

Para instalar el middleware body-parser en nuestra aplicación lo hacemos mediante npm.

$ npm install body-parser

Es por ello que lo primero que haremos será cargar los middleware express y body-parser.

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

Definimos la aplicación Express:

  1. var app = express();

Y hacemos uso del middleware body-parser:

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

Esto será la inicialización de los middleware que vamos a utilizar. Pero luego deberemos de crear el código. Para ello vamos a utilizar la ruta "/saludo" para manejar las peticiones. Dentro de esta ruta vamos a utilizar las peticiones GET para pintar el formulario que nos haga la petición POST y la petición POST para recuperar los parámetros.

Mediante el método .get vamos a atender a las peticiones GET:

  1. var formulario = '<form method="post" action="/saludo">'
  2. + '<label for="nombre">¿Cómo te llamas?</label>'
  3. + '<input type="text" name="nombre" id="nombre">'
  4. + '<input type="submit" value="Enviar"/>'
  5. + '</form>';
  6.  
  7. var cabecera = '<h1>Saludo</h1>';
  8.  
  9. app.get('/saludo', function (req, res) {
  10.  
  11. res.send('<html><body>'
  12. + cabecera
  13. + formulario
  14. + '</html></body>'
  15. );
  16.  
  17. });

Vemos que el método get recibe dos parámetros con la request y la response. Sobre el elemento response devolvemos el contenido de la respuesta, en este caso el formulario. Formulario que envía los parámetros (en este caso el parámetro nombre) mediante el método POST.

Para conformar la petición POST vamos a utilizar el método .post

  1. app.post('/saludo', function (req, res) {
  2.  
  3. var nombre = req.body.nombre || '';
  4. var saludo = '';
  5.  
  6. if (nombre != '')
  7. saludo = "Hola " + nombre;
  8.  
  9. res.send('<html><body>'
  10. + cabecera
  11. + '<p>' + saludo + '</p>'
  12. + formulario
  13. + '</html></body>'
  14. );
  15.  
  16. });

Lo que vemos en el método post es que utilizamos el middleare body-parser para recuperar el valor del parámetro enviado por POST. La estructura para acceder a las variables será:

req.body.nombrevariable

En este caso como queremos acceder a la variable nombre utilizamos:

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

El operador OR nos servirá para asignar un valor vacío en el caso de que no llegue el parámetro.

Al igual que sucedía en el método .get vamos a utilizar el elemento response para devolver el contenido. En el cual ponemos el saludo y volvemos a incluir el formulario.

Ya solo nos quedará arrancar el servidor para poder ejecutar la prueba de enviar parámetros POST con Node.js y Express

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

De esta manera vemos lo sencillo que es enviar parámetros POST con Node.js y Express.

Vídeos sobre Node.js


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*