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
Create an account or log in
Keep learning for free! Join and start boosting your career
The h object is the second argument received by the handler function of a defined path.
It contains a collection of utilities and properties related to the response information to be sent to the client, the browser.
Basic methods of the h object:
The Response object (created with the h.response method), allows defining the response properties. Through this object the headers, document type and response code returned to the client can be specified by means of the following methods: .header(), .type() and .code().
Code: Example of simple response and redirect.
Contributions 9
Questions 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');
}
});
Want to see more contributions, questions and answers from the community?