Não entendi porque passar o whitelist como true e o forbidNonWhiteListed como true tb, o segundo não estaria anulando o efeito do primeiro?
Não entendi porque passar o whitelist como true e o forbidNonWhiteListed como true tb, o segundo não estaria anulando o efeito do primeiro?
Olá, Marcelo!
Entendo sua confusão, e é uma boa pergunta. Na verdade, as opções whitelist
e forbidNonWhitelisted
no ValidationPipe
do NestJS trabalham juntas, mas cada uma tem um propósito específico.
Quando você seta whitelist: true
, o NestJS automaticamente remove as propriedades do objeto de entrada que não existem no DTO. Por exemplo, se você enviar um objeto com uma propriedade idade
, mas essa propriedade não existir no DTO, ela será removida automaticamente.
Agora, se você também setar forbidNonWhitelisted: true
, além de remover as propriedades que não existem no DTO, o NestJS também retornará um erro se encontrar uma propriedade que não exista no DTO. Ou seja, ele não apenas remove a propriedade, mas também informa ao cliente que ele está enviando uma propriedade que não é aceita.
Então, em resumo, whitelist: true
remove as propriedades não aceitas e forbidNonWhitelisted: true
retorna um erro quando encontra uma propriedade não aceita.
Espero que isso esclareça sua dúvida. Se você ainda tiver alguma confusão, eu recomendo que você experimente enviar algumas requisições com propriedades não aceitas e veja o que acontece quando você muda essas configurações.
Espero ter ajudado e bons estudos!