Menu
CoddyTech

Nieznane pola

Część sekcji TypeScript i NestJS ścieżki Node.js w Coddy. Lekcja 12 z 17.

Klient może wysłać pola, o których nie wspomina Twój DTO, takie jak { "title": "x", "admin": true }, a trafią one do Twojego kodu bez zmian. ValidationPipe ma dwie opcje dotyczące takich pól.

app.useGlobalPipes(
    new ValidationPipe({ whitelist: true }),
);

whitelist: true usuwa każde pole, które nie ma dekoratora walidacji, zanim Twoja metoda zobaczy treść żądania. Dodaj forbidNonWhitelisted: true, a potok zamiast tego odrzuci takie żądanie, zwracając kod 400 i komunikat "property admin should not exist". forbidNonWhitelisted działa tylko razem z whitelist; użyte samodzielnie nie robi nic.

Ciche usuwanie sprawdza się w przypadku formularza wysyłającego dodatkowe dane. Odrzucenie informuje klienta API o literówce, takiej jak titel.

challenge icon

Wyzwanie

Łatwy
  • POST /tasks z polem CreateTaskDto nie zwraca odpowiedzi 400 wskazującej to pole.
  • Prawidłowe treści nadal zwracają odpowiedź 201.
  • Wyślij POST /tasks z { "title": "Book flights", "owner": "admin" }, a następnie z { "title": "Book flights" }.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji TypeScript i NestJS