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.
Wyzwanie
ŁatwyPOST /tasksz polemCreateTaskDtonie zwraca odpowiedzi 400 wskazującej to pole.- Prawidłowe treści nadal zwracają odpowiedź 201.
- Wyślij
POST /tasksz{ "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();
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.