Menu
CoddyTech

Unbekannte Felder

Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 12 von 17.

Ein Client kann Felder senden, die in deinem DTO nie erwähnt werden, etwa { "title": "x", "admin": true }, und sie erreichen deinen Code unverändert. ValidationPipe bietet dafür zwei Optionen.

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

whitelist: true entfernt jedes Feld ohne Validierungsdekorator, bevor deine Methode den Body sieht. Füge forbidNonWhitelisted: true hinzu, und die Pipe weist einen solchen Body stattdessen mit 400 und "property admin should not exist" zurück. forbidNonWhitelisted funktioniert nur zusammen mit whitelist; allein bewirkt es nichts.

Stilles Entfernen eignet sich für ein Formular, das zusätzliche Eingaben sendet. Zurückweisen weist einen API-Client auf seinen Tippfehler hin, etwa titel.

challenge icon

Aufgabe

Einfach
  • POST /tasks mit einem Feld CreateTaskDto liefert keine Antwort mit Status 400, in der dieses Feld genannt wird.
  • Gültige Anfragetexte liefern weiterhin Status 201.
  • Sende POST /tasks mit { "title": "Book flights", "owner": "admin" } und anschließend mit { "title": "Book flights" }.

Probier es selbst

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 dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in TypeScript und NestJS