PracticU

מניעת וולידציה אוטומטית

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › מניעת וולידציה אוטומטית
מניעת וולידציה אוטומטית
כדי להחזיר ללקוח הודעת שגיאת ולידציה משלנו צריך קודם לעצור את הבדיקה האוטומטית של dotnet, שמחזירה JSON משלה עוד לפני שהפונקציה מתחילה.
איך מגלים שהבדיקה קורית לפני הפונקציה
1. ניסוי בקונסול: ב-controller מוסיפים הדפסה Adding a book בפונקציית ההוספה. ספר חוקי מדפיס את ההודעה. ספר עם מחיר מינוס 100 מחזיר שגיאה בלי שההודעה מופיעה, כלומר הקוד לא הגיע לתוך הפונקציה.
2. למה: כשה-JSON מה-body הופך לאובייקט book (data binding), REST API ב-dotnet מריץ כברירת מחדל את בדיקות הוולידציה, שלנו ושלה. אם אחת נכשלת היא עוצרת לפני הפונקציה ומחזירה את ה-JSON הרגיל שלה.
מניעת הבדיקה האוטומטית
1. בקובץ program, לפני הוספת ה-controllers: כותבים builder.services.configure על המחלקה API Behavior Options, ובתוכה options.SuppressModelStateInvalidFilter = true.
2. מה זה עושה: ה-Model State Invalid Filter פועל אוטומטית, בודק אם המודל חוקי, ואם לא מחזיר את השגיאות שלו בלי להיכנס ל-route. Suppress אומר לדכא אותו.
3. בדיקה: אחרי ההגדרה, מחיר שלילי נכנס לפונקציה והתקבלה ההודעה "הכנסת לך מחיר שלילי", והפעם לא נעשתה שום בדיקה אוטומטית.
שימו לב
עצירת הבדיקה לא מחליפה אותה, והשלב הבא הוא לבדוק בעצמנו אם הוולידציה הצליחה ולהחזיר אובייקט שגיאה משלנו. זה חשוב כי לא תמיד רוצים להחזיר ל-frontend משהו שהמערכת יצרה, אלא הודעה מסוימת ומדויקת.
אחרי הסרטון תדעו איך לכבות את המסנן האוטומטי של ולידציה ולמה הוא רץ לפני הפונקציה.
השיעור הבא בקורס: שימוש ב-ModelState

פרקי ההרצאה: מניעת וולידציה אוטומטית

  1. 00:00

    הצגת הודעה בקונסול מהקונטרולר

  2. 01:00

    בדיקה אם הפונקציה רצה בשגיאה

  3. 01:40

    data binding והוולידציה האוטומטית

  4. 02:24

    ביטול הבדיקה האוטומטית של dotnet

תמלול ההרצאה: מניעת וולידציה אוטומטית

הטקסט המלא של הדקות הראשונות בהרצאה «מניעת וולידציה אוטומטית» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אוקיי, בשביל להצליח להחזיר הודעת שגיאה משלנו אנחנו צריכים להבין כמה דברים. דבר ראשון, בואו נלך רגע לקונטרולר. ננסה לעשות משהו מעניין. כל מה שננסה לעשות זה כשמוסיפים ספר, נציג הודעה לקונסול Adding a book.

  2. 00:23

    זה כל מה שאני רוצה לעשות. נריץ, ננסה לגשת ל-Postman ולהוסיף ספר, אבל נוסיף ספר שאין איתו בעיה. ספר, אה, עם, אה, נתונים חוקיים לגמרי. בואו נגיד C Programming Language, תיאור, price חוקי Send, והוא אמור להצליח להוסיף את הספר.

  3. 00:44

    בואו נסתכל רגע על הטרמינל, על הקונסול ונראה כאן Adding a book. מעולה! בואו רגע נסגור. נריץ שוב שהתצוגה הקודמת של הקונסול לא תפריע לנו.

  4. 00:59

    go, go, go. והנה אנחנו רואים קונסול חדש ונגדיר פה איזושהי שגיאה. נניח מינוס מאה. ננסה להוסיף.

  5. 01:08

    כמובן שאנחנו נחטוף את השגיאה, אבל מה שמעניין אותי זה האם אנחנו נראה בקונסול את ההודעה, והתשובה לא. זאת אומרת שמשהו קרה לפני הפונקציה ואנחנו בעצם לא נכנסנו בכלל לפונקציה אם הייתה שגיאה.

  6. 01:25

    אז מה קרה כאן? מה ש-dotnet עושה זה אומרת כזה דבר. אם אתם קולשים ל-route ואתם מקבלים אובייקט מה-JSON שנשלח, הרי אתם שלחתם JSON ואנחנו צריכים לקחת את ה-JSON מה-body, from body, ולהפוך אותו לאובייקט book.

  7. 01:42

    אז ברגע שזה עושה, זה קונספט שנקרא data binding, הוא פשוט לוקח את ה, אמ, אובייקט שלנו ו-אה, עושה לו binding ל-book ויוצר ממנו אובייקט ספר. ברגע שזה קורה by default REST API dotnet מה שהיא עושה זה מריצה את שגיאות הוולידציה שהוגדרו כאן.

  8. 02:03

    גם אם הן לא הוגדרו היא מריצה שגיאות משלה. לדוגמה, אם זה string שהוא לא null, אז היא בודקת שבאמת שלחו לי value ולא null ועושה את כל הבדיקות האלה, ובמידה ואחת מהבדיקות נכשלת אז היא מייד עוצרת, לא נכנסת לתוך הפונקציה ומחזירה לנו הודעת שגיאה בתצורה של ה-JSON שקיבלנו פה, ואת זה אנחנו לא רוצים.

  9. 02:27

    אנחנו רוצים למנוע את ה-JSON הזה ולהחזיר הודעה משלנו. אז הדבר הראשון שאנחנו צריכים לעשות זה לומר ל-dotnet לא לבצע את הבדיקה האוטומטית, אלא להיכנס לתוך הפונקציה מבלי לבצע שום בדיקה אוטומטית בעצמה.

  10. 02:46

    את ההגדרה הזאת אנחנו עושים כאן ב-program.

ההרצאה הקודמת: שגיאות וולידציה

ההרצאה הבאה: שימוש ב-ModelState

הרצאות קשורות מקורסים אחרים

  • מניעת כפילות בקוד של Fragment
  • התקנה אוטומטית של אופיס 365
  • התקנה אוטומטית עם Kickstart
  • סיכום ב-3 דקות - התקנה אוטומטית MDT

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio