Este documento presenta un taller sobre la creación de una API REST con Node.js y MongoDB. Introduce conceptos básicos de Javascript, Node.js y las características de una API REST. Explica cómo usar las librerías Express y MongoDB para construir una API que permita realizar operaciones CRUD sobre datos almacenados en una base de MongoDB.
5. “Hola Mundo” en Javascript
Crear un programa “Hola Mundo” con Javascript
6. “Hola Mundo” en Javascript
Crear un programa “Hola Mundo” con Javascript
● Sin usar HTML
7. “Hola Mundo” en Javascript
Crear un programa “Hola Mundo” con Javascript
● Sin usar HTML
● Sin usar navegador
● ???
8. “Hola Mundo” en Javascript
● Con Node.js
● Creamos una archivo con
holamundo.js
console.log(“Hola Mundo”)
● Desde terminal
$ node holamundo
9. Algo de teoría….Node.js
Node.js es un entorno de desarrollo del lado
del servidor open source y multiplataforma
escrito en JavaScript orientado a eventos
asíncronos.
10. Características
● Desarrollo en JavaScript
● Basado en el motor V8 de Chrome
● Operaciones de E/S sin bloqueos
● Orientado a eventos (asíncrono)
● Liviano y Eficiente
● Gestor de paquetes NPM
● Una de las herramientas estándar en del desarrollo Web
(stack MEAN, MERN, MEVN)
11. ¿Cuándo usar Node.js?
● Servidores Web: Con el uso de librerías que se
encuentran en los paquetes propios de Node.JS o de
terceros como Express, Koa y Hapi.
● Sockets: Son eventos que para realizar chats y
aplicaciones en tiempo real es una excelente opción,
sobretodo gracias a su gran velocidad.
● IOT: Programar placas pequeñas con poco hardware
como un Arduino, permite desarrollar una aplicación y
desplegarla
13. Algo de teoría...API
El término API es una abreviatura de Application
Programming Interfaces, que en español significa
interfaz de programación de aplicaciones.
Se trata de un conjunto de definiciones y protocolos
que se utiliza para desarrollar e integrar el software
de las aplicaciones, permitiendo la comunicación
entre dos aplicaciones de software a través de un
conjunto de reglas.
14.
15.
16. Algo de teoría...API REST
REST es una interfaz para conectar
varios sistemas basados en el
protocolo HTTP y nos sirve para
obtener y generar datos y operaciones,
devolviendo esos datos en formatos
muy específicos, como XML y JSON.
17. Características de API REST
● Protocolo cliente/servidor sin estado: cada petición HTTP contiene toda
la información necesaria para ejecutarla, lo que permite que ni cliente ni
servidor necesiten recordar ningún estado previo para satisfacerla.
● Las operaciones más importantes relacionadas con los datos en cualquier
sistema REST y la especificación HTTP son cuatro: POST (crear), GET (leer
y consultar), PUT (editar) y DELETE (eliminar).
● Los objetos en REST siempre se manipulan a partir de la URI.
18. ¿Cómo vamos a montar nuestra API Rest?
Express. Framework de Node diseñado para
crear aplicaciones web y API.
● Manejo específico de diferentes verbos HTTP
● Gestión separada de las peticiones por medio
URL (routes)
● Servicio de ficheros estáticos
● Configuración de plantillas
● Alternativas: adonis.js, Nest
20. Algo de teoría...Relacional vs No Relacional
SQL NoSQL
Integridad de datos
(exactitud y consistencia)
Cada dato tiene un tipo definido No se exige definir el tipo de
datos que vas a almacenar.
Operaciones atómicas
(un cambio que afecta a
múltiples entidades)
Atomicidad mediante relaciones No existe relación, pero
podemos usar referencias
Escalabilidad Vertical Horizontal
Velocidad - +
Consistencia vs
Redundancia
Una única vez en toda la base de
datos
Repetir adrede los datos a
conveniencia
Comodidad para el
desarrollador
Madurez Prototipado
21. ¿Cuándo?
● La velocidad de lectura y escritura es más importante que mantener la
consistencia.
● No sabes cómo se verá la estructura de tus datos al final, y
probablemente cambie mucho.
● Te es más fácil adquirir varias máquinas modestas a través del tiempo
que invertir en una sola muy potente.
● Prefieres algo fácil de usar como programador, que no te exige
compromisos y te deje almacenar casi cualquier cosa donde quieras.
22. ¿...y los datos?
● Mongoose (ODM)
○ Definición de esquemas
○ Tipado (SchemaTypes) de
atributos, atributos virtuales
○ Métodos de validación,
indexado
○ Expresiones regulares
○ Funciones Get/Set