1
resposta

[Dúvida] Propriedade whitelist e forbidNonWhiteListed

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?

1 resposta

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!