Olá devs, tudo bem? Gostaria de uma explicação melhor sobre o que foi dito pela instrutora na questão de validações da rota e no objeto, não entendi essa parte.
Olá devs, tudo bem? Gostaria de uma explicação melhor sobre o que foi dito pela instrutora na questão de validações da rota e no objeto, não entendi essa parte.
Olá João, tudo bem?
Vou te explicar de uma maneira mais geral, mas se tiver alguma dúvida mais especifica, peço que destaque ela.
No desenvolvimento de APIs, especialmente quando usamos ORMs como o Sequelize, é importante garantir que os dados que chegam nas rotas estejam corretos e completos antes de serem processados. Isso é feito por validações. No seu caso, ao criar uma nova rota para adicionar matrículas, é crucial validar os dados que estão sendo passados.
Validações na Rota
Validação de Parâmetros da Rota: Quando você define uma rota como /pessoas/:estudante_id/matriculas
, o estudante_id
é um parâmetro que precisa ser validado. No exemplo que você mencionou, se tentarmos criar uma matrícula para um estudante_id
que não existe, o banco de dados retornará um erro de chave estrangeira (FOREIGN KEY), pois não há um estudante correspondente. No entanto, essa validação acontece no nível do banco de dados e não na aplicação em si.
Validação de Dados do Corpo da Requisição: Quando você faz um POST
para criar uma nova matrícula, o corpo da requisição deve conter dados válidos, como status
, curso_id
, e estudante_id
. É uma boa prática validar esses dados antes de tentar salvá-los no banco de dados. Isso pode incluir verificar se todos os campos necessários estão presentes, se os valores estão no formato correto, etc.
Como Implementar Validações?
Para implementar essas validações, você pode usar bibliotecas como Joi
ou express-validator
. Elas ajudam a definir regras de validação de forma clara e a retornar mensagens de erro amigáveis caso os dados não estejam corretos. Aqui está um exemplo de como você poderia validar o corpo da requisição usando express-validator
:
const { check, validationResult } = require('express-validator');
router.post('/pessoas/:estudante_id/matriculas', [
check('status').isIn(['matriculado', 'cancelado']),
check('curso_id').isInt(),
check('estudante_id').isInt()
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
matriculaController.criaNovo(req, res);
});
Nesse exemplo, estamos verificando se o status
é um dos valores permitidos e se curso_id
e estudante_id
são inteiros.
Espero que isso ajude a esclarecer como as validações podem ser aplicadas nas rotas e nos objetos em sua aplicação.
Bons estudos!