devterview_$ iniciar simulação

Validar entrada numa rota Express

MédioPlenoValidação

Pergunta

Como você valida o corpo/query/params de uma requisição no Express de forma que a rota não vire uma pilha de `if`?

Resposta esperada

Definir um SCHEMA (Zod, Joi, Yup, ou `express-validator`) e aplicá-lo como middleware ANTES do handler: o middleware valida `req.body`/`query`/`params`, e ou rejeita com 400 + um corpo de erro estruturado (quais campos, por quê), ou anexa a versão já parseada/tipada (`req.validated`) e chama `next()`. Vantagens sobre `if (!req.body.email) return res.status(400)...`: um lugar por rota, mensagens consistentes, coerção de tipo (query string `"5"` vira `number`), e — com Zod + TS — o tipo do handler sai do schema (`z.infer`), então não tem cast manual. Regra: validação de FORMATO (tipo, obrigatório, range) no middleware; validação de REGRA DE NEGÓCIO (e-mail já existe, saldo insuficiente) no serviço, retornando 409/422. Nunca confie que o cliente mandou o que deveria.

Por que perguntam isso

Pergunta pleno de Express. Conecta com a pergunta 'o que o Express não te dá'. Sinal bom: 'formato no middleware, regra de negócio no serviço' e `z.infer`.

#validacao#zod#middleware
publicidade

Relacionadas