leccion 3- Redis
leccion 3- Redis
https://github.com/arlemorales23/ApiRest.git
1. ¿Qué es Redis?
Redis (Remote Dictionary Server) es una base de datos NoSQL de código abierto, en memoria,
que funciona como un almacén de estructura de datos. Se caracteriza por su velocidad
extremadamente alta y su versatilidad.
Redis es una base de datos NoSQL de tipo clave-valor. Esto significa que los datos se almacenan
como pares de clave-valor, donde cada clave es única y se utiliza para acceder a su valor asociado.
Ventajas de Redis
Casos de uso
2. Node.js:
Definición: Es un entorno de ejecución para JavaScript del lado del servidor, que permite ejecutar
código JavaScript fuera del navegador.
Analogía: Piensa en Node.js como conductor de carro que permite que JavaScript, que
tradicionalmente solo "conducía" dentro del navegador (como un carro en la ciudad), pueda también
circular por otras partes, como una carretera fuera de la ciudad (el servidor).
3. Express:
Definición: Es un marco de trabajo minimalista para crear aplicaciones web con Node.js. Ayuda a
gestionar rutas, peticiones HTTP, respuestas y middleware de manera más sencilla.
Analogía: Express sería el plano para construir una autopista eficiente. Organiza los carriles (rutas) y
los semáforos (peticiones y respuestas) para que el tráfico de información fluya correctamente.
Definicion: Es el protocolo que permite la comunicación entre los navegadores web y los servidores.
Es el conjunto de reglas que define cómo se deben formatear, transmitir y responder las solicitudes y
respuestas que se intercambian a través de la web.
HTTP es un protocolo sin estado (stateless), lo que significa que cada petición entre el cliente
(navegador) y el servidor es independiente, y el servidor no recuerda las interacciones previas.
Aunque hoy en día, tecnologías como las cookies y sesiones permiten mantener cierto estado entre
varias peticiones.
Tipos de peticiones HTTP
Cada vez que un cliente (como un navegador) quiere interactuar con un servidor, envía una petición
HTTP. Estas peticiones pueden ser de diferentes tipos, dependiendo de la acción que el cliente
desea realizar:
1. GET:
o Descripción: Solicita datos del servidor. Se usa para obtener información sin modificar
nada en el servidor.
o Ejemplo: Cuando visitas una página web, el navegador realiza una petición GET para
obtener el contenido de esa página.
o Analogía: Es como leer un periódico en línea. No estás modificando nada, solo
accediendo a la información.
2. POST:
o Descripción: Envía datos al servidor, generalmente para crear o procesar información.
Se utiliza en formularios o al subir archivos.
o Ejemplo: Cuando llenas un formulario de contacto o de registro, el navegador envía los
datos con una petición POST.
o Analogía: Es como enviar una carta por correo; envías información que el destinatario
(servidor) debe procesar.
3. PUT:
o Descripción: Actualiza o reemplaza un recurso existente en el servidor con los datos
proporcionados.
o Ejemplo: Cuando actualizas tu perfil en una red social, se podría usar una petición
PUT para reemplazar tu información antigua con la nueva.
o Analogía: Es como reemplazar el contenido de un archivo que ya existe en tu
computadora con nueva información.
4. PATCH:
o Descripción: Similar a PUT, pero en lugar de reemplazar todo el recurso, solo modifica
partes específicas de él.
o Ejemplo: Actualizar solo el campo "nombre" en tu perfil de usuario, sin tocar otros
datos.
o Analogía: Es como corregir una página de un libro con un marcador, en lugar de
reescribir todo el capítulo.
5. DELETE:
o Descripción: Elimina un recurso existente en el servidor.
o Ejemplo: Cuando eliminas una publicación o archivo de un servicio web.
o Analogía: Es como tirar un archivo a la papelera de reciclaje.
6. HEAD:
o Descripción: Solicita el encabezado de una página sin obtener el cuerpo del
contenido. Es útil para verificar si un recurso está disponible o para obtener metadatos.
o Ejemplo: Un buscador web podría usar una petición HEAD para comprobar si una
página ha sido actualizada sin descargar todo el contenido.
o Analogía: Es como mirar la portada de un libro para ver si es nuevo, sin abrirlo para
leerlo.
7. OPTIONS:
o Descripción: Solicita información sobre las opciones de comunicación permitidas para
un recurso, como los métodos HTTP soportados por el servidor.
Ejemplo: Un servidor podría responder a una solicitud OPTIONS indicando que
o
soporta GET, POST y DELETE, pero no PUT o PATCH.
o Analogía: Es como preguntar a un restaurante qué platos tienen disponibles antes de
hacer un pedido.
8. CONNECT:
o Descripción: Se utiliza para crear un túnel de comunicación entre el cliente y el
servidor. Se suele usar con HTTPS para establecer conexiones seguras.
o Ejemplo: Un navegador puede usar CONNECT al conectarse a un servidor web seguro
mediante SSL.
o Analogía: Es como crear una línea directa de comunicación segura entre dos
personas.
9. TRACE:
o Descripción: Sirve para probar y diagnosticar el camino que sigue una solicitud hasta
el servidor, reflejando el contenido de la solicitud en la respuesta.
o Ejemplo: Es poco común y se usa principalmente para depuración.
o Analogía: Es como un eco que devuelve la misma información que enviaste, solo para
comprobar que llegó correctamente.
5. Middleware
Es una función intermedia que se ejecuta durante el ciclo de vida de una solicitud HTTP, antes de
que la respuesta final llegue al cliente. Su propósito es procesar la solicitud de alguna manera antes
de pasarla a la siguiente capa, que puede ser otro middleware o el manejador final que genera la
respuesta.
Analogía
Imagina que tienes una fábrica de coches. El coche (solicitud) pasa por diferentes estaciones
(middlewares), donde se le realizan ajustes o inspecciones antes de ser entregado al cliente
(respuesta). Cada estación puede:
Ejemplo en Express
6 Gestor de dependencias:
Definición: Es una herramienta que facilita la instalación, actualización y manejo de las bibliotecas
externas (dependencias) que tu proyecto necesita.
Analogía: Imagina que tienes una cocina (tu proyecto) y necesitas diferentes ingredientes
(dependencias) para preparar un platillo. El gestor de dependencias sería el supermercado donde
vas a buscar esos ingredientes, siempre con versiones actualizadas y listas para usar.
• Sequelize: Un ORM que trabaja con varias bases de datos como PostgreSQL, MySQL,
SQLite, etc. Es como un traductor que te permite comunicarte en varios lenguajes (bases de
datos) usando el mismo idioma (JavaScript).
• TypeORM: Similar a Sequelize, pero está más enfocado en el uso de TypeScript, con
características avanzadas para aplicaciones complejas. Es como un traductor que también
revisa la gramática mientras traduce.
• Mongoose: Un ORM específicamente diseñado para bases de datos no relacionales como
MongoDB. Es como un traductor especializado en un solo idioma, pero que funciona muy bien
en su campo.
8. Creación de Apirest
Estructura del proyecto:
Instalar las dependencias:
npm install express mysql2 redis helmet dotenv jsonwebtoken bcrypt && npm install nodemon
--save-dev
Este comando instalará todas las dependencias necesarias para el proyecto. Vamos a desglosarlo:
1. Dependencias principales:
o express: Framework web para Node.js
2. Dependencia de desarrollo:
o nodemon: Utilidad que monitorea cambios en los archivos y reinicia automáticamente el
servidor (instalada como dependencia de desarrollo con --save-dev)
Después de ejecutar este comando, npm instalará todas estas dependencias y las añadirá al archivo
package.json.
Como probar:
• Preparación:
• Asegúrate de que tu servidor Node.js esté en funcionamiento. Ejecuta npm start en la terminal desde el
directorio de tu proyecto.
• Verifica que la base de datos MySQL esté activa y configurada correctamente.
• Asegúrate de que la conexión a Redis Cloud esté establecida.
•
• Crear un nuevo usuario:
{
"nombre": "Juan Pérez",
"email": "[email protected]",
"password": "contraseña123"
}
• Haz clic en "Send".
• Deberías recibir una respuesta con el ID del usuario creado.
Obtener el token:
• Obtener un usuario:
Key: Authorization
Value: Bearer [tu_token_jwt]