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

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

1D
17H
56M
33S

Visualizaci贸n de errores

16/35
Recursos

Hasta ahora hemos estado mostrando un texto b谩sico con los detalles de cada error capturado, pero en lo que se refiere a la apariencia, esta no es la forma m谩s amigable de hacerlo ya que no le estamos dando mayor feedback al usuario sobre lo que ha pasado con su operaci贸n y lo estamos dejando en una calle sin salida.

Lo que haremos en esta clase ser谩 utilizar una vista a la que pasaremos la informaci贸n del error y la mostraremos de una manera que sea visualmente m谩s amigable para los usuarios. Para esto, sustituiremos los llamados a h.response( '<mensaje>' ).code( <c贸digo-error> ) por h.view( '<ruta>', { <variables> } )

Para la visualizaci贸n del error 404, incorporamos un nuevo layout, con su respectiva vista 404.hbs y definimos una nueva ruta para los llamados a urls que no est茅n definidas en nuestra aplicaci贸n con /{any*}. Esta ruta se coloca al final de las definiciones para que solo se tome en cuenta si ninguna de las rutas anteriores se corresponde con el request. Al hacer el llamado a la vista en el controlador del sitio, debemos recordar indicar en el tercer argumento de la funci贸n view, el objeto con la propiedad layout para indicar el nuevo layou que mostrar谩 el error.

Aportes 6

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

404.hbs

<div class="container">
  <div class="row justify-content-center mt-5">
    <div class="col-md-12 text-center">
      <span class="display-1 d-block">404</span>
      <div class="mb-4 lead">La p谩gina que buscas no existe.</div>
      <a href="/" class="btn btn-link">Vuelve al Home</a>
    </div>
  </div>
</div>

Es importante agregar el prefijo assets/ a los scripts declarados en el layout de error


  <!-- Optional JavaScript -->
  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="./assets/error_files/jquery-3.2.1.slim.min.js"
    integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
    crossorigin="anonymous"></script>
  <script src="./assets/error_files/popper.min.js"
    integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
    crossorigin="anonymous"></script>
  <script src="./assets/error_files/bootstrap.min.js"
    integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4"
    crossorigin="anonymous"></script>

驴Que beneficios trae usar los bloques {{#with variable}} en vez del tradicional {{#if variable}} ?

en la funcion createUser (req,h) 鈥
yo cuando realiza el success en vez de eso le redirecciono al 鈥/鈥 y le mando la cookie del user, as铆 una vez registrado no se tiene que loguear, ya sabeis UI/UX GOOD

return h.redirect('/').state('user', {
        name: request.payload.name,
        email: request.payload.email
    });

<div class="container">
    <div class="row justify-content-center mt-5">
      <div class="col-md-12 text-center">
        <span class="display-1 d-block">404</span>
        <div class="mb-4 lead">La p谩gina que buscas no existe.</div>
        <a href="/" class="btn btn-link">Vuelve al Home</a>
      </div>
    </div>
  </div>