Framework: ExpressJS
Contents
Framework: ExpressJS#

Documentación básica de NodeJS
Índice
Configuraciones#
Crear una carpeta para el proyecto y dentro ejecutar
npm init
RECOMENDADO Instalar nodemon:
npm install nodemon
y agregar al package.jsonInstalar ExpressJS:
npm install express --save
Archivo Inicial#
Se crea un archivo index.js o simil:
1// importamos la librería express:
2const express = require('express');
3
4// instanciamos express:
5const app = express();
6// definimos el puerto:
7const port = 3000;
8
9// se preparan los datos hardcodeados:
10let consolas = [
11 {marca: 'Sony', modelo: 'PlayStation', lanzamiento: 1994},
12 {marca: 'Sega', modelo: 'MegaDrive ', lanzamiento: 1991},
13 {marca: 'Nintendo', modelo: 'Gameboy', lanzamiento: 1989},
14 {marca: 'Microsoft', modelo: 'XBOX', lanzamiento: 2001},
15]
16
17// Creamos una ruta raiz:
18app.get('/', (req, res)=>{
19 // se define la cabezera y el cuerpo:
20 res.status(200).send(consolas); // no hay que parsear a json.
21});
22
23// creamos el servidor:
24app.listen(port, ()=>{
25 console.log(`Servidor ejecutandose en http://localhost:${port}`);
26});
Habilitar CORS#
Por defecto el proyecto tiene las CORS restringidas, de modo que si vamos a conectarnos desde una aplicación externa se bloqueará.
Para trabajar con cors se instala
npm install cors --save
CORS Publicas#
Habilitar cors para hacer publica la API:
1const express = require('express');
2
3const app = express();
4const port = 3500;
5// importamos la librería cors:
6const cors = require('cors');
7
8// decimos a express que defina los cors (por defecto ahora es pública):
9app.use(cors());
Rutas Express#
Peticiones Get#
Ejemplo de Get con parámetros:
1const express = require('express');
2
3const app = express();
4const port = 3000;
5
6let consolas = [
7 {marca: 'Sony', modelo: 'PlayStation', lanzamiento: 1994},
8 {marca: 'Sega', modelo: 'MegaDrive ', lanzamiento: 1991},
9 {marca: 'Nintendo', modelo: 'Gameboy', lanzamiento: 1989},
10 {marca: 'Microsoft', modelo: 'XBOX', lanzamiento: 2001},
11]
12
13app.get('/', (req, res)=>{
14 res.status(200).send(consolas);
15});
16
17// petición get de una ruta con un parámetro:
18app.get('/consola/:modelo', (req, res)=>{
19 // recorremos las consolas y recuperamos la consola con el modelo buscado:
20 let consola = consolas.find(elem => {
21 return elem.modelo === req.params.modelo;
22 });
23 // si no encuentra nada:
24 if(consola === undefined){
25 return res.status(404).json({
26 message: 'No se encontró ninguna consola'
27 })
28 }
29 res.status(200).send(consola);
30});
31
32app.listen(port, ()=>{
33 console.log(`Servidor ejecutandose en http://localhost:${port}`);
34});
Peticiones POST#
Ejemplo de inserciones post:
1const express = require('express');
2
3const express = require('express');
4
5const app = express();
6const port = 3000;
7
8let consolas = [
9 {marca: 'Sony', modelo: 'PlayStation', lanzamiento: 1994},
10 {marca: 'Sega', modelo: 'MegaDrive ', lanzamiento: 1991},
11 {marca: 'Nintendo', modelo: 'Gameboy', lanzamiento: 1989},
12 {marca: 'Microsoft', modelo: 'XBOX', lanzamiento: 2001},
13];
14
15// ejecutamos el siguiente middleware para parsear código json de todo el body que entra por POST:
16app.use(express.json());
17app.use(express.urlencoded({extended: true}));
18
19app.get('/', (req, res)=>{
20 res.status(200).send(consolas);
21});
22
23app.get('/consola/:modelo', (req, res)=>{
24 let consola = consolas.find(elem => {
25 return elem.modelo === req.params.modelo;
26 });
27
28 if(consola === undefined){
29 return res.status(404).json({
30 message: 'Consola creada correctamente'
31 })
32 }
33 res.status(200).send(consola);
34});
35
36// petición post:
37app.post('/consola/crear/', (req, res)=>{
38 // añadir el nuevo valor al array:
39 consolas.push(req.body);
40 // devolvemos una respuesta:
41 res.status(201).json({
42 mensaje: 'Se ha registrado la consola'
43 });
44});
45
46app.listen(port, ()=>{
47 console.log(`Servidor ejecutandose en http://localhost:${port}`);
48});
Peticiones PUT#
Ejemplo de actualizaciones put:
1const express = require('express');
2
3const app = express();
4const port = 3000;
5
6let consolas = [
7 {marca: 'Sony', modelo: 'PlayStation', lanzamiento: 1994},
8 {marca: 'Sega', modelo: 'MegaDrive ', lanzamiento: 1991},
9 {marca: 'Nintendo', modelo: 'Gameboy', lanzamiento: 1989},
10 {marca: 'Microsoft', modelo: 'XBOX', lanzamiento: 2001},
11];
12
13app.use(express.json());
14app.use(express.urlencoded({extended: true}));
15
16app.get('/', (req, res)=>{
17 res.status(200).send(consolas);
18});
19
20app.get('/consola/:modelo', (req, res)=>{
21 let consola = consolas.find(elem => {
22 return elem.modelo === req.params.modelo;
23 });
24
25 if(consola === undefined){
26 return res.status(404).json({
27 message: 'Consola creada correctamente'
28 })
29 }
30 res.status(200).send(consola);
31});
32
33app.post('/consola/crear/', (req, res)=>{
34 consolas.push(req.body);
35 res.status(201).json({
36 mensaje: 'Se ha registrado la consola'
37 });
38});
39
40// crear un put que recibirá un parámetro para buscar el registro a actualizar:
41app.put('/consola/actualizar/:modelo', (req, res)=>{
42 // localizar la posición en el array:
43 let i = consolas.findIndex(elem => {
44 return elem.modelo === req.params.modelo;
45 });
46 console.log();
47 // si existe coincidencia se procede a crear:
48 if(i > 0){
49 consolas[i] = req.body;
50 res.status(201).json({
51 message: 'Consola actualizada con éxito'
52 });
53 }
54});
55
56app.listen(port, ()=>{
57 console.log(`Servidor ejecutandose en http://localhost:${port}`);
58});
Peticiones DELETE#
Ejemplo de actualizaciones put:
1const express = require('express');
2
3const app = express();
4const port = 3000;
5
6let consolas = [
7 {marca: 'Sony', modelo: 'PlayStation', lanzamiento: 1994},
8 {marca: 'Sega', modelo: 'MegaDrive ', lanzamiento: 1991},
9 {marca: 'Nintendo', modelo: 'Gameboy', lanzamiento: 1989},
10 {marca: 'Microsoft', modelo: 'XBOX', lanzamiento: 2001},
11];
12
13app.use(express.json());
14app.use(express.urlencoded({extended: true}));
15
16app.get('/', (req, res)=>{
17 res.status(200).send(consolas);
18});
19
20app.get('/consola/:modelo', (req, res)=>{
21 let consola = consolas.find(elem => {
22 return elem.modelo === req.params.modelo;
23 });
24
25 if(consola === undefined){
26 return res.status(404).json({
27 message: 'Consola creada correctamente'
28 })
29 }
30 res.status(200).send(consola);
31});
32
33app.post('/consola/crear/', (req, res)=>{
34 consolas.push(req.body);
35 res.status(201).json({
36 mensaje: 'Se ha registrado la consola'
37 });
38});
39
40app.put('/consola/actualizar/:modelo', (req, res)=>{
41 let i = consolas.findIndex(elem => {
42 return elem.modelo === req.params.modelo;
43 });
44 console.log();
45 if(i > 0){
46 consolas[i] = req.body;
47 res.status(201).json({
48 message: 'Consola actualizada con éxito'
49 });
50 }
51});
52
53// el delete recibirá también un parámetro para localizar un elemento:
54app.delete('/consola/eliminar/:modelo', (req, res)=>{
55 let i = consolas.findIndex(elem => {
56 return elem.modelo === req.params.modelo;
57 });
58 console.log();
59 if(i > 0){
60 // ejecutar método para borrar y mensaje:
61 consolas.splice(i, 1);
62 res.status(200).json({
63 message: 'Consola eliminada con éxito'
64 });
65 }
66});
67
68app.listen(port, ()=>{
69 console.log(`Servidor ejecutandose en http://localhost:${port}`);
70});