Menu
CoddyTech

שדות לא מוכרים

חלק מהיחידה TypeScript ו-NestJS במסלול ה-Node.js של Coddy. שיעור 12 מתוך 17.

לקוח יכול לשלוח שדות שה-DTO שלך כלל לא מזכיר, כמו { "title": "x", "admin": true }, והם מגיעים לקוד שלך ללא שינוי. ל-ValidationPipe יש שתי אפשרויות לטיפול בהם.

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

whitelist: true מסיר כל שדה שאין לו דקורטור ולידציה לפני שהגוף מגיע למתודה שלך. הוסף forbidNonWhitelisted: true, והצינור יסרב לקבל גוף כזה במקום זאת, עם שגיאה 400 והודעה "property admin should not exist". forbidNonWhitelisted פועל רק יחד עם whitelist; בפני עצמו הוא לא עושה דבר.

הסרה ללא הודעה מתאימה לטופס ששולח קלטים נוספים. סירוב לקבל את הבקשה מיידע את לקוח ה-API על שגיאת הקלדה, כמו titel.

challenge icon

אתגר

קל
  • POST /tasks עם שדה CreateTaskDto לא מצהיר על תשובות 400 שמציינות את שם השדה הזה.
  • גופים תקינים עדיין מקבלים תשובה 201.
  • שלחו POST /tasks עם { "title": "Book flights", "owner": "admin" }, ואז עם { "title": "Book flights" }.

נסו בעצמכם

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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה TypeScript ו-NestJS