Campi sconosciuti
Fa parte della sezione TypeScript e NestJS del percorso Node.js di Coddy. Lezione 12 di 17.
Un client può inviare campi che il tuo DTO non menziona mai, come { "title": "x", "admin": true }, e questi arrivano intatti al tuo codice. ValidationPipe offre due opzioni per gestirli.
app.useGlobalPipes(
new ValidationPipe({ whitelist: true }),
);whitelist: true rimuove ogni campo che non ha un decoratore di convalida prima che il tuo metodo riceva il corpo della richiesta. Aggiungi forbidNonWhitelisted: true e la pipe rifiuta invece un corpo di questo tipo, con un errore 400 e "property admin should not exist". forbidNonWhitelisted funziona solo insieme a whitelist; da solo non fa nulla.
La rimozione silenziosa è adatta a un modulo che invia input extra. Il rifiuto segnala al client API un errore di battitura, come titel.
Sfida
FacilePOST /taskscon un campoCreateTaskDtonon restituisce 400 indicando il nome di quel campo.- I corpi validi restituiscono comunque 201.
- Invia
POST /taskscon{ "title": "Book flights", "owner": "admin" }, poi con{ "title": "Book flights" }.
Provalo tu
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();
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.