Menu
CoddyTech

Field yang Tidak Dikenal

Termasuk bagian TypeScript dan NestJS dalam perjalanan Node.js di Coddy. Pelajaran 12 dari 17.

Client dapat mengirim field yang tidak disebutkan dalam DTO-mu, seperti { "title": "x", "admin": true }, dan field tersebut sampai ke kodemu tanpa perubahan. ValidationPipe memiliki dua opsi untuk menanganinya.

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

whitelist: true menghapus setiap field yang tidak memiliki decorator validasi sebelum method-mu melihat body tersebut. Tambahkan forbidNonWhitelisted: true, dan pipe akan menolak body seperti itu, alih-alih menghapusnya, dengan status 400 dan "property admin should not exist". forbidNonWhitelisted hanya berfungsi bersama whitelist; jika digunakan sendiri, opsi ini tidak melakukan apa-apa.

Menghapus field tanpa pemberitahuan cocok untuk form yang mengirim input tambahan. Menolak body memberi tahu client API tentang salah ketiknya, seperti titel.

challenge icon

Tantangan

Mudah
  • POST /tasks dengan field CreateTaskDto tidak menyatakan bahwa respons 400 menyebutkan nama field tersebut.
  • Body yang valid tetap menghasilkan respons 201.
  • Kirim POST /tasks dengan { "title": "Book flights", "owner": "admin" }, lalu dengan { "title": "Book flights" }.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di TypeScript dan NestJS

Latihan sendiri: Playground Express