NodeJS
Parte 1
Jhonny Felipez Andrade
Contenido
• ¿Que es [Link]?
• Inicia un proyecto
• Express
• Métodos HTTP
• Reinicia automáticamente el servidor
• Enviando Peticiones al Servidor
• Validación.
2
¿Qué es [Link]?
Entorno de Ejecución de JavaScript orientado a
Eventos Asíncronos.
Utiliza un Enfoque de Eventos Asíncronos; lo que
significa que puede realizar múltiples tareas
asincrónas tales como leer y escribir en el
servidor, conectarse a una base de datos o
enviar Request de Formularios.
3
Ventajas de [Link]
Código de JavaScript (ES6+)
NPM con una gran cantidad de paquetes
Apps Monolíticas, Micro Servicios o API’s
4
Quienes utilizan [Link]?
• NetFlix
• Uber
• Groupon
• PayPal
• Linkedin (20 veces mas rápido, y consume 35%
menos recurso del servidor)
• Walmart
• Medium
• Nasa
5
Enlace de [Link]
[Link]
6
¿Qué es NPM?
NPM (Node Package Manager) se enfoca en
instalar y gestionar paquetes, es decir,
descargar e instalar las dependencias en tu
proyecto
7
Para instalar
Para instalar paquetes:
> npm install <nombre-paquete>
Para instalar dependencias de desarrollo:
> npm install -D < nombre-paquete >
8
Enlace de NPM
[Link]
9
¿Qué es NPX?
NPX (Node Package eXecute) es una
herramienta incluida con NPM (Node Package
Manager) se enfoca en descargar (si no esta el
paquete) y ejecutar los paquetes.
10
Enlace de NPX
[Link]
11
INICIA UN PROYECTO
12
Inicia un proyecto de [Link]
Para iniciar un proyecto:
> npm init –y
y: acepta por defecto nombre, descripción,
…
Lo anterior crea el [Link]
13
[Link]
{
"name": "proyecto",
"version": "1.0.0",
"description": "",
"main": "[Link]",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs"
}
14
EXPRESS
15
¿Que es Express?
Es un Framework para [Link], muy
minimalista y con una serie de opciones que
son comunes para crear sitios web y
aplicaciones móviles.
Su Principal ventaja es que puedes instalar
los paquetes que vas a necesitar en tu
aplicación.
16
¿Qué Incluye Express?
• Routing y Redireccionamiento
• Soporte a los diferentes Métodos HTTP
• Middleware
• Soporte de Template Engines
• Manejo de Errores
17
Enlace de Express
[Link]
18
Para instalar Express
> npm install express
Lo anterior actualiza el [Link], crea el
[Link] (tiene los nombres de las
dependencias de las dependencias
utilizadas en nuestro proyecto) y crea la
carpeta node_modules (tiene las
dependencias)
19
[Link]
{
"name": "proyecto",
"version": "1.0.0", [Link] script
"description": "",
"main": "[Link]",
de inicio
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC", tipo: commonjs
"type": "commonjs",
"dependencies": {
"express": "^5.1.0"
} dependencias
}
20
[Link] (anterior)
const express = require("express"); // crea la variable
express
const app = express(); // llama a la función de express,
// Define un puerto y levanta el servidor
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en
[Link]
});
21
[Link]
{
"name": "proyecto",
"version": "1.0.0", [Link] script
"description": "",
"main": "[Link]",
de inicio
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC", tipo: module
"type": "module",
"dependencies": {
"express": "^5.1.0"
} dependencias
}
22
[Link] (nueva)
import express from "express"; // crea la variable express
const app = express(); // llama a la función de express,
// Define un puerto y levanta el servidor
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en
[Link]
});
23
MÉTODOS HTTP
24
¿Qué son lo métodos HTTP?
También conocidos como verbos HTTP,
son las acciones que un cliente (como un
navegador web) le indica al servidor que
debe realizar sobre un recurso.
Estos métodos definen la intención de la
solicitud y se utilizan para distintas
operaciones.
25
Métodos HTTP
GET – Utilizado para Mostrar Información.
POST – Utilizado para Enviar Información.
PUT / PATCH – Utilizado para Actualizar Información.
DELETE – Utilizado para Eliminar Información.
26
[Link]
import express from "express"; // crea la variable express
const app = express(); // llama la función de express,
// Definiendo peticiones y rutas
// req: petición al servidor
// res: respuesta del servidor
[Link]('/empleado', (req, res) => {
[Link]('Obteniendo Empleados');
});
// Define un puerto y levanta el servidor
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en [Link]
27
});
Para ejecutar NODE
Levanta el servidor:
> node [Link] ([Link] es un archivo script)
Salida:
28
No se definió ninguna respuesta, en esa ruta o
endpoint.
29
Se definió un mensaje como respuesta, en esa
ruta o endpoint.
30
REINICIA AUTOMÁTICAMENTE
EL SERVIDOR
31
Para reiniciar automáticamente
el servidor
Instale nodemon:
> npm install –D nodemon
-D dependencia de desarrollo
Modifique el [Link]: Con el script start se
{ ejecuta nodemon
...
"scripts": {
"start": "nodemon [Link]"
},
...
}
Para ejecutar el script start:
> npm run start
32
ENVIANDO PETICIONES AL
SERVIDOR
33
// [Link]
import express from "express";
const app = express();
[Link]('/empleado', (req, res) => {
[Link]('Obteniendo Empleados'); });
[Link]('/insercion', (req, res) => {
[Link]('Insertando Empleados'); });
[Link]('/actualiza', (req, res) => {
[Link]('Actualizando Empleados (put)'); });
[Link]('/actualizacion', (req, res) => {
[Link]('Actualizando Empleados (patch)'); });
[Link]('/elimina', (req, res) => {
[Link]('Eliminando Empleados'); });
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en [Link]
}); 34
Enlace de Postman
[Link]
35
Postman
Petición
Ruta
Envía la
solicitud
Salida 36
Extensión Thunder Client
de VS Code
[Link]
37
Instalación de Thunder Client
38
Instalación de Thunder Client
39
Inicio de Thunder Client
40
Thunder Client
Petición
Ruta
Envía la
solicitud
Salida
41
// [Link]
import express from "express";
const app = express();
// Lectura y parseo del body
[Link]([Link]());
[Link]('/insercion', (req, res) => {
[Link]([Link]);
});
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en [Link]
});
42
Thunder Client
Body
Entrada
Salida
43
Propiedades de REQ
[Link] – Cuerpo de la solicitud HTTP.
[Link] – Encabezados enviados junto con la solicitud
HTTP.
[Link] – Un objeto de nombre de parámetro y valor.
[Link] – Obtiene el texto después del ? en la ruta de la
solicitud HTTP, como objeto.
44
VALIDACIÓN
45
EXPRESS-VALIDATOR
Es una herramienta que permite validar las
solicitudes de entrada al servidor y
determina si la solicitud es válida o no, qué
datos coinciden según tus propias
validaciones, etc.
46
Enlace de EXPRESS-VALIDATOR
[Link]
47
Para instalar EXPRESS-VALIDATOR
> npm install express-validator
48
Primera Forma
// [Link]
import express from "express";
import {check, validationResult} from "express-validator";
const app = express();
[Link]([Link]());
[Link](
'/insercion',
[
check('nombre','El nombre no puede ir vacio').notEmpty(),
check('email','Eso no parece un email').isEmail(),
check('password','El password no debe menos de 6
caracteres').isLength({min:6})
],
49
(req, res) => {
let resultado = validationResult(req);
//[Link]([Link]());
if (![Link]()) { // Datos incorrectos
return [Link]({
ok: false,
errores: [Link]()
})
}
[Link]({ // Creación exitosa
ok: true,
msg: 'Registro Insertado'
});
});
const puerto = 3001;
[Link](puerto,
() => {[Link](`Servidor en [Link]
});
50
Thunder Client
51
Segunda Forma
// [Link]
import express from "express";
import {check, validationResult} from "express-validator";
const app = express();
[Link]([Link]());
[Link](
'/insercion',
async (req, res) => {
[Link]([Link]);
const {password} = [Link];
52
await check('nombre').notEmpty()
.withMessage('El nombre no puede ir vacio')
.run(req);
await check('email').isEmail()
.withMessage('Eso no parece un email').run(req);
await check('password').isLength({min:6})
.withMessage('El password no debe menos de 6 caracteres')
.run(req);
await check('repetir_password').equals(password)
.withMessage('Los passwords no son iguales')
.run(req);
53
let resultado = validationResult(req);
//[Link]([Link]());
if (![Link]()) { // Datos incorrectos
return [Link]({
ok: false,
errores: [Link]()
})
}
[Link]({ // Creación exitosa
ok: true,
msg: 'Registro Insertado'
});
});
const puerto = 3001;
[Link](puerto,
() => { [Link](`Servidor en [Link]
});
54
Thunder Client
55
Bibliografía
• [Link]
• [Link]
56
GRACIAS
57