Campos Desconhecidos
Parte da seção TypeScript e NestJS do Journey de Node.js da Coddy. Lição 12 de 17.
Um cliente pode enviar campos que seu DTO nunca menciona, como { "title": "x", "admin": true }, e eles chegam ao seu código sem nenhuma alteração. ValidationPipe tem duas opções para esses campos.
app.useGlobalPipes(
new ValidationPipe({ whitelist: true }),
);whitelist: true remove todos os campos que não têm um decorador de validação antes que seu método receba o corpo da requisição. Adicione forbidNonWhitelisted: true e o pipe rejeita esse corpo, em vez disso, com o status 400 e "property admin should not exist". forbidNonWhitelisted só funciona junto com whitelist; sozinho, não faz nada.
Remover silenciosamente é adequado para um formulário que envia campos extras. Rejeitar avisa o cliente da API sobre um erro de digitação, como titel.
Desafio
FácilPOST /taskscom um campoCreateTaskDtonão declara respostas 400 que mencionem esse campo.- Corpos válidos ainda recebem resposta 201.
- Envie
POST /taskscom{ "title": "Book flights", "owner": "admin" }e, em seguida, com{ "title": "Book flights" }.
Experimente você mesmo
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.