Recuerda
npm docs joi
Si quieres ver la documentacion
Introducción
¿Qué es Express.js?
Configuración del entorno de desarrollo para este curso
Instalación de Express.js y tu primer servidor HTTP
Routing con Express.js
CRUD
¿Qué es una RESTful API?
GET: recibir parámetros
GET: parámetros query
Separación de responsabilidades con express.Router
Instalación de Postman o Insomia
POST: método para crear
PUT, PATCH y DELETE
Códigos de estado o HTTP response status codes
Servicios
Introducción a servicios: crea tu primer servicio
Crear, editar y eliminar
Async await y captura de errores
Middlewares
¿Qué son los Middlewares?
Middleware para HttpErrors
Manejo de errores con Boom
Validación de datos con Joi
Probando nuestros endpoints
Middlewares populares en Express.js
Deployment
Consideraciones para producción
Problema de CORS
Deployment a Heroku
Próximos pasos
Continúa en el Curso de Node.js con PostgreSQL
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 21
Preguntas 7
npm docs joi
Si quieres ver la documentacion
Este curso es genial, en otros validamos datos con Joi sin entender bien como funcionaba.
–No hay error.
El middleware: Fresco, tranquilo, siga 😎
🤣🤣🤣😁
Schema o DTO (Data Transfer objects), (objetos de Transferencia de datos)
Joi
Joi es la herramienta más poderosa para la validación de datos en JavaScript. Este módulo permite crear esquemas de datos usando un lenguaje simple, comprensible e intuitivo.
A la hora de interactuar con una API, es muy importante que se validen los datos tanto en el lado del servidor como en el del cliente para tener controlados posibles errores y la forma en la que se interactúa con la base de datos.
Anteriormente Joi pertenecía al ecosistema de Hapi, un framework para crear aplicaciones en Node, pero a partir de la versión 12.1.0 decidió dejar de formar parte de este framework y ser un paquete totalmente independiente, lo cual facilita aún más la integración con este.
Integrar Joi en nuestro proyecto
Lo instalaremos como dependencia en el proyecto:
$ npm install --save joi
$ npm install --save-dev @types/joi
Fuente: https://duprez.medium.com/validación-con-joi-y-nestjs-f11cc32dbf4b
Comando para instalar la libreria
npm i joi
Ahhhhh… ¿cómo le hacen para recordar para cada cosa una librería?
Justo estaba buscando que era un DTO, Data Transfer Object, es un middleware para validar data entre otras cosas
Joi es muy bueno ya que podemos trabajar en base a esquemas con el objetivo de mantener el orden y simplicidad, por otro lado existe otra alternativa y es usar express-validator para las validaciones en los params, body y query de la peticion …
.
https://www.npmjs.com/package/express-validator
.
https://express-validator.github.io/docs/
.
Existe un DTO más simple que hapi/joi e incluso más liviano que es yup
productSchema.js
const Joi = require('joi');
const id = Joi.string().uuid();
const name = Joi.string().alphanum().min(3).max(20);
const price = Joi.number().integer().min(1);
const createProductSchema = Joi.object({
name: name.required(),
price: price.required(),
});
const updateProductSchema = Joi.object({
name: name,
price: price,
});
const getProductSchema = Joi.object({
id: id.required(),
});
module.exports = { createProductSchema, updateProductSchema, getProductSchema}
Buen ejemplo caso práctico de dónde y cómo usar closures. No había encontrado una caso en dónde aplicarlos.
Perdon platzi, pero aprendi closures gracias al maestro de la cocina del codgo Sacha Lift. : https://youtu.be/JXG_gQ0OF74
Libreria para validar datos joi
npm -i joi
Para el eschema de eliminar un producto implemente que solo se valide el ID:
const deleteProductSchema = Joi.object({
id: id.required(),
});
Ya quedo la lógica 😄
Una excelente alternativa es express-validator 😁
Aun no veo la clase pero estoy seguro que es la mejor de este curso. Vamos a darle, pa encima
Documentación: Joi
validator.handler.js
(middleware):
const boom = require('@hapi/boom');
function validatorHandler(schema, property) {
return (req, res, next) => {
const data = req[property];
const { error } = schema.validate(data);
if (error) {
next(boom.badRequest(error));
}
next();
};
}
module.exports = validatorHandler;
Aquí se crea un middleware de forma dinámica (se usa closure).
Si se recibe el schema, con schema.validate()
se valida la información que se desea validar. La información viene de data
, la cual viene de un request (body, params, query).
Si hay un error (no cumple con la validación), entonces se envía un error de tipo boom. Si no hay error, el servicio sigue (next()
).
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.