Framework: ExpressJS#

Logo Angular

Documentación básica de NodeJS

Configuraciones#

  • Crear una carpeta para el proyecto y dentro ejecutar npm init

  • RECOMENDADO Instalar nodemon: npm install nodemon y agregar al package.json

  • Instalar 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});