Menu
CoddyTech

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.

challenge icon

Desafio

Fácil
  • POST /tasks com um campo CreateTaskDto não declara respostas 400 que mencionem esse campo.
  • Corpos válidos ainda recebem resposta 201.
  • Envie POST /tasks com { "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();
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de TypeScript e NestJS