Lab 12: Express

Descripción

En esta actividad instalaremos y exploraremos Express, un framework de Node.js para hacer desarrollo en el back-end.

Modalidad

Individual.

Objetivos de aprendizaje
  • Preparar el ambiente de trabajo con Node.js + NPM + Express
  • Entender lo que son los frameworks de desarrollo web de back-end.
  • Explorar Node.js + Express
Instrucciones
  • Verifica que ya cuentes con npm ejecutando el comando npm -V. En caso negativo, instala npm y node.
  • Haz que tu trabajo sea un proyecto de npm ejecutando npm init desde tu carpeta de trabajo, y sigue las indicaciones del comando.
    Observa y analiza el contenido del archivo package.json
  • Si deseas instalar nuevos paquetes, utiliza npm install [nombre_paquete]. Puedes probar con npm install --save-dev nodemon, un paquete que sirve para que automáticamente se reinicie el servidor cada vez que haces un cambio en un archivo.
    El argumento --save-dev sirve para que sólo se instale el paquete mientras te encuentras en el entorno de desarrollo. Observa nuevamente el archivo package.json, y notarás que algunas líneas ahora incluyen nodemon, particularmente "start": "nodemon app.js". Si no existe, modifica la sección scripts para incluirla. Ahora podrás iniciar el servidor con npm start, que iniciará nodemon.
  • Instala Express desde tu carpeta de trabajo con npm install --save express.
    Observa que utilizamos --save para que el paquete esté disponible tanto en desarrollo como en producción.
  • Sigue la demostración del profesor en la sesión de clase.
  • Estructura básica de una aplicación con express:

    const express = require('express');
    const app = express();
    
    //Middleware
    app.use((request, response, next) => {
        console.log('Middleware!');
        next(); //Le permite a la petición avanzar hacia el siguiente middleware
    });
    
    app.use((request, response, next) => {
        console.log('Otro middleware!');
        response.send('¡Hola mundo!'); //Manda la respuesta
    });
    
    app.listen(3000);
                                

  • Para agregar rutas:

    app.use('/ruta', (request, response, next) => {
        response.send('Respuesta de la ruta "/ruta"'); 
    });
                                

  • Para instalar un paquete para manipular fácilmente los datos de las peticiones: npm install --save body-parser. Para utilizar el paquete:
    const bodyParser = require('body-parser');
    
    app.use(bodyParser.urlencoded({extended: false}));
    
    app.use('/alguna-ruta', (request, response, next) => {
        console.log(request.body);
    });
                            
  • Para limitar las rutas a un tipo de petición en particular, en lugar de use(), puedes usar, por ejemplo, get() o post().
  • Si los archivos comienzan a crecer, es importante reestructurarlos semánticamente en módulos para que sean más fáciles de mantener. Puedes separar un archivo en express utilizando el ruteador de express. Por convención, crearemos el nuevo archivo en una carpeta routes:
    const express = require('express');
    
    const router = express.Router();
    
    router.get('/ruta', (request, response, next) => {
        response.send('Respuesta de la ruta "/modulo/ruta"'); 
    });
    
    module.exports = router;
                            
    Y el archivo principal quedaría:
    const express = require('express');
    const app = express();
    
    const misRutas = require('./routes/nombre_archivo');
    
    app.use('/modulo', misRutas);
    
    app.listen(3000);
                            
  • Para determinar el estado HTTP de una respuesta, puedes utilizar el método status() en el objeto de la respuesta.
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), elabora una aplicación web con las siguientes características:
    • La aplicación debe poder responder al menos a 5 rutas diferentes, distribuidas en al menos 2 módulos, y mandar una respuesta HTTP 404 cuando la ruta no existe.
    • En alguna de las rutas, la aplicación debe contener al menos 1 forma que debe enviar datos al servidor por POST. El servidor debe reaccionar ante este envío y guardar los datos en un archivo de texto dentro del mismo servidor.
Preguntas a responder
  • Describe el archivo package.json.
Especificaciones de entrega

A través de tu repositorio personal.