En este taller, no es necesario tener conocimientos avanzados de Node.js ni de Express. Basta con tener nociones básicas de JavaScript para poder seguir adelante. Empezaremos con una breve introducción sobre qué es Node.js y Express antes de entrar en materia.
Node.js permite ejecutar JavaScript del lado del servidor. Antes de Node.js, JavaScript solo podía ejecutarse dentro de un navegador. Node.js utiliza el motor de renderizado V8 de Google, que es de código abierto. Esto nos permite ejecutar JavaScript en el servidor, brindándonos ventajas y desventajas comparadas con otros lenguajes de backend como Java.
Ventajas y desventajas de Node.js
Ventajas
- Naturaleza asíncrona de JavaScript: Node.js permite manejar múltiples solicitudes simultáneamente gracias a su naturaleza asíncrona.
- No acceso a hilos del procesador: Esto facilita la gestión de muchas consultas sin saturar el procesador.
Desventajas
- Limitaciones en procesamiento intensivo: Node.js no es ideal para tareas que requieren mucho procesamiento del CPU, como el tratamiento de imágenes.
Qué es Express
Express es un framework minimalista para Node.js que facilita la creación de aplicaciones web y APIs REST. Entre sus características principales se encuentra el manejo de peticiones HTTP, la capacidad de definir rutas y el uso de middlewares.
Middlewares en Express
Los middlewares son funciones que se ejecutan durante el ciclo de vida de una solicitud HTTP. Pueden modificar la solicitud, la respuesta o detener el ciclo de vida de la solicitud.
Estructuración de una aplicación con Express
Instalación y configuración de Express
Primero, creamos nuestra aplicación e instalamos las dependencias necesarias:
npm init -y
npm install express
Luego, configuramos nuestra aplicación:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Manejo de rutas y peticiones
Petición GET
Para manejar una petición GET, definimos una ruta y enviamos una respuesta JSON:
app.get('/', (req, res) => {
res.status(200).json({ message: 'Bienvenida gracias por echar un cable' });
});
Petición POST
Para manejar una petición POST, definimos otra ruta y manejamos los datos recibidos:
app.post('/', (req, res) => {
const { user, password } = req.body;
res.status(200).json({ message: `Usuario: ${user}, Contraseña: ${password}` });
});
Estructuración avanzada: Controladores y Rutas
En aplicaciones más complejas, es recomendable separar la lógica de las rutas y los controladores. Creamos una carpeta routes y un archivo user.js:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.status(200).json({ message: 'Ruta de usuario' });
});
module.exports = router;
Luego, lo incluimos en nuestro archivo principal app.js:
const userRouter = require('./routes/user');
app.use('/user', userRouter);
Conclusión
En esta primera parte del taller, hemos visto cómo iniciar una aplicación básica de Node.js con Express, manejar peticiones GET y POST, y estructurar nuestra aplicación utilizando rutas y controladores. En la siguiente parte, profundizaremos en el uso de bases de datos y la autenticación con JWT.