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 comandonpm -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 archivopackage.json
- Si deseas instalar nuevos paquetes, utiliza
npm install [nombre_paquete]
. Puedes probar connpm 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 archivopackage.json
, y notarás que algunas líneas ahora incluyennodemon
, particularmente"start": "nodemon app.js"
. Si no existe, modifica la secciónscripts
para incluirla. Ahora podrás iniciar el servidor connpm 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()
opost()
. - 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
:
Y el archivo principal quedaría: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;
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.
Recursos
Especificaciones de entrega
A través de tu repositorio personal.