Introducción

1

Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi

2

Conceptos principales de hapi y creación de nuestro primer servidor

3

Breve historia y estado actual

Creando un sitio básico con Hapi

4

El objeto h, response y sus herramientas

5

Uso de plugins - Contenido estático

6

Plantillas con Handlebars

7

Renderizado de vistas - Layout y template del home

8

Recibiendo parámetros en una ruta POST - Creación del registro

9

Definir una mejor estructura con buenas prácticas en Hapi

10

Validando la información - Implementando Joi

11

Introducción a Firebase

12

Creando un modelo y guardando en firebase

13

Implementando el login y validación del usuario

14

Autenticación de usuarios - Cookies y estado

15

Manejando errores

16

Visualización de errores

17

Controlar el error 404 en inert y el error de validación

18

Repaso - Creación del modelo y controlador para preguntas

19

Repaso - Creación de las rutas para crear preguntas

20

Listar las últimas preguntas en el home

Aplicacion de conceptos avanzados

21

Enrutamiento avanzado - visualizando una pregunta

22

Enrutamiento avanzado - respondiendo una pregunta

23

Generando la lógica de la plantilla según si es creador o contribuidor

24

Métodos de servidor - respuesta correcta

25

Usando métodos de servidor

26

Manejo del caché - Agregando el home al caché

27

Procesamiento de archivos - Aceptando imágenes

28

Logging con Good - Monitoreando el servidor

29

Creación de plugins - Teoría

30

Creación de plugins - Implementando un API REST

31

Estrategías de autenticación - Asegurando el API REST

32

Seguridad básica - Asegurando el servidor contra CSRF

33

Seguridad básica - Asegurando el servidor contra XSS

Herramientas de desarrollo

34

Depuración del proyecto

35

Ecosistema de Hapi

Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

El objeto h, response y sus herramientas

4/35
Recursos

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:

  • h.response(): Crea un objeto de respuesta.
  • h.redirect(): Redirecciona una petición.

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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');
    }
  });