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.
Tantangan
MudahPOST /tasksdengan fieldCreateTaskDtotidak menyatakan bahwa respons 400 menyebutkan nama field tersebut.- Body yang valid tetap menghasilkan respons 201.
- Kirim
POST /tasksdengan{ "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();
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di TypeScript dan NestJS
Latihan sendiri: Playground Express