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.
Görev
KolayPOST /tasksileCreateTaskDtoalanı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 /tasksisteğ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();
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.