Menu
CoddyTech

Bilinmeyen Alanlar

Coddy'nin Node.js Journey'sinin TypeScript ve NestJS bölümünün bir parçası. Ders 12 / 17.

Bir istemci, DTO’nuzda hiç bahsedilmeyen { "title": "x", "admin": true } gibi alanlar gönderebilir ve bu alanlar kodunuza olduğu gibi ulaşır. ValidationPipe bu alanlar için iki seçeneğe sahiptir.

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

whitelist: true, gövde metodunuza ulaşmadan önce doğrulama dekoratörü olmayan tüm alanları kaldırır. forbidNonWhitelisted: true eklerseniz, pipe bunun yerine böyle bir gövdeyi 400 hatasıyla ve "property admin should not exist" mesajıyla reddeder. forbidNonWhitelisted yalnızca whitelist ile birlikte çalışır; tek başına hiçbir şey yapmaz.

Ek girdiler gönderen bir form için sessizce kaldırmak uygundur. Reddetmek ise titel gibi yazım hatalarını API istemcisine bildirir.

challenge icon

Görev

Kolay
  • POST /tasks ile CreateTaskDto alanını içeren bir istek, bu alanın adını belirten 400 yanıtı vermez.
  • Geçerli gövdeler yine 201 yanıtı verir.
  • Önce POST /tasks isteğini { "title": "Book flights", "owner": "admin" } ile, ardından { "title": "Book flights" } ile gönderin.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

TypeScript ve NestJS bölümündeki tüm dersler