Hasta el momento ExpressJS me gusta mucho como organiza las cosas, pero es importante tener conocimiento de otros Frameworks.
Introducción
Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi
Conceptos principales de hapi y creación de nuestro primer servidor
Breve historia y estado actual
Creando un sitio básico con Hapi
El objeto h, response y sus herramientas
Uso de plugins - Contenido estático
Plantillas con Handlebars
Renderizado de vistas - Layout y template del home
Recibiendo parámetros en una ruta POST - Creación del registro
Definir una mejor estructura con buenas prácticas en Hapi
Validando la información - Implementando Joi
Introducción a Firebase
Creando un modelo y guardando en firebase
Implementando el login y validación del usuario
Autenticación de usuarios - Cookies y estado
Manejando errores
Visualización de errores
Controlar el error 404 en inert y el error de validación
Repaso - Creación del modelo y controlador para preguntas
Repaso - Creación de las rutas para crear preguntas
Listar las últimas preguntas en el home
Aplicacion de conceptos avanzados
Enrutamiento avanzado - visualizando una pregunta
Enrutamiento avanzado - respondiendo una pregunta
Generando la lógica de la plantilla según si es creador o contribuidor
Métodos de servidor - respuesta correcta
Usando métodos de servidor
Manejo del caché - Agregando el home al caché
Procesamiento de archivos - Aceptando imágenes
Logging con Good - Monitoreando el servidor
Creación de plugins - Teoría
Creación de plugins - Implementando un API REST
Estrategías de autenticación - Asegurando el API REST
Seguridad básica - Asegurando el servidor contra CSRF
Seguridad básica - Asegurando el servidor contra XSS
Herramientas de desarrollo
Depuración del proyecto
Ecosistema de Hapi
Crea una cuenta o inicia sesión
¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera
Adrián Estrada
El objeto h, es el segundo argumento que recibe la función handler de una ruta definida.
Contiene una colección de utilidades y propiedades relativas a la información de respuesta que se va a enviar al cliente, al navegador.
Métodos básicos del objeto h:
El objeto Response (creado con el método h.response), permite definir las propiedades de la respuesta. A través de este objeto se pueden especificar las cabeceras, tipo de documento y código de respuesta devuelto al cliente, mediante los métodos: .header(), .type() y .code()
Código: Ejemplo de respuesta simple y redirect.
Aportes 9
Preguntas 1
Hasta el momento ExpressJS me gusta mucho como organiza las cosas, pero es importante tener conocimiento de otros Frameworks.
Dejo mi apunte de esta clase en el código
'use strict'
// Requerir el modulo de hapi (Framework)
const Hapi = require('@hapi/hapi')
// Configurar el servidor de nuestra aplicación. En un contenedor (Docker) si marca error colocar 0.0.0.0 (todos)
const server = Hapi.server({
port: process.env.PORT || 3000,
host: 'localhost'
})
// Definicion de función para inicializar el proyecto. Intenamnete hay tareas asincronas
async function init() {
// Definición de rutas (indicar el método HTTP, URL y controlador de ruta)
server.route({
method: 'GET',
path: '/',
handler: (req, h) => {
// El objeto h es un conjunto de utilidades para la respuesta.
return h.response('Hola desde HapiJS').code(200)
}
})
server.route({
method: 'GET',
path: '/redirect',
handler: (req, h) => {
return h.redirect('https://platzi.com')
}
})
// Arrancar el servidor de HapiJS, se considera una tarea asincrona.
try {
await server.start()
console.log(`Servidor lanzado en: ${server.info.uri}`)
} catch (error) {
console.error(error)
// Salir de nodeJS con un código de error (1), 0 es un código de exito
process.exit(1)
}
}
// Inicializar el proyecto
init();
soy solo yo o tiene problemas el video
Este curso es muy bueno, pero tiene algunas cositas que ya están algo desfasadas, por ello dejo mi package.json con las dependencias, como están ahora:
"dependencies": {
"@hapi/basic": "^7.0.0",
"@hapi/boom": "^10.0.0",
"@hapi/crumb": "^9.0.0",
"@hapi/hapi": "^21.1.0",
"@hapi/inert": "^7.0.0",
"@hapi/scooter": "^7.0.0",
"@hapi/vision": "^7.0.0",
"bcrypt": "^5.1.0",
"blankie": "^5.0.0",
"dotenv": "^16.0.3",
"firebase-admin": "^11.4.1",
"handlebars": "^4.7.7",
"hapi": "^18.1.0",
"joi": "^17.7.0",
"laabr": "^6.1.3",
"uuid": "^9.0.0"
},
"devDependencies": {
"hapi-dev-errors": "^4.0.0",
"nodemon": "^2.0.20",
"standard": "^17.0.0"
},
Tambien como una guía dejo mi proyecto: https://github.com/AndresMpa/courses/tree/hapiFramework
✌
He probado varios framework y Hapi me ha parecido el mejor hasta el momento 😃
Ojalá todos explicaran desde la base teórica de por qué hacen lo que hacen y de dónde salen las cosas. Excelente clase.
async function init () {
server.route({
method: 'GET',
path: '/',
handler: (req, h) => {
return h.response('Hola mundo mundial .....!!!').code(200);
}
});
server.route({
method: 'GET',
path: '/redirect',
handler: (req, h) => {
return h.redirect('http://platzi.com');
}
});
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?