Express

Turbinando o

Morgan

Middleware de Log

 

Morgan é um middleware que cria logs das requisições HTTP recebidas pela aplicação.

yarn add morgan
const morgan = require("morgan");

//...

app.use(morgan('dev'));

index.js

Express Validator

Middleware de Validação

 

Express Validator é um middleware de validação e sanitização de dados disponível para aplicações Express.

yarn add express-validator

https://github.com/validatorjs/validator.js#validators

const { body, validationResult } = require('express-validator');

router.post(
  '/login/registrar',
  body('email').isEmail().not().isEmpty(),
  body('senha').isLength({ min: 5 }),
  (req, res) => {
    const errors = validationResult(req);
    
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }

   // ...
  },
);

rota/login.js

const { check, validationResult } = require('express-validator');

router.get(
  '/:id?',
  check('id').optional().isInt(),
  (req, res) => {
    const errors = validationResult(req);
    
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }

   // ...
  },
);

rota/nota.js

const { body, validationResult } = require('express-validator');

router.post(
  '/login/registrar',
  body('email').isEmail().normalizeEmail(),
  body('nome').trim(),
  (req, res) => {
    const errors = validationResult(req);
    
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }

   // ...
  },
);

rota/login.js

Desafio

Adicionar validadores nas rotas dos recursos:

  • pedido;

Validar e exibir mensagens para as situações abaixo:

 

  • Validar campos obrigatórios ao criar um pedido;
  • Buscar pedidos fornecendo um ID inteiro;
  • Quando criar um pedido, validar se o atributo de enderecoEntrega foram informados;
  • Quando criar um pedido, validar se o atributo produtos é um Array com itens;
  • Quando criar um pedido, validar se o valorTotal é igual a soma dos produtos;
  • Validar se o token vindo no header das requisições está no formato JWT;