PracticU

שימוש ב-ModelState

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › שימוש ב-ModelState
שימוש ב-ModelState
אחרי שעצרנו את הבדיקה האוטומטית, הסרטון מראה איך לבדוק בעצמנו בתוך הפונקציה אם הוולידציה הצליחה, ואיך להחזיר ללקוח אובייקט שגיאה במקום מחרוזת.
השלבים
1. המשתנה modelState: מייצג את מצב הוולידציה, ויש לו isValid שאומר אם היא הצליחה או נכשלה.
2. הדפסה לבדיקה: מדפיסים modelState.isValid לקונסול. ספר לא חוקי הדפיס false וספר חוקי הדפיס true. שני הספרים נוספו, כי רק הצגנו את הערך ולא עצרנו את הפונקציה.
3. עצירה והחזרת שגיאה: בודקים אם הוולידציה נכשלה (not valid) ועושים return עם badRequest. הוא מקבל כל דבר: כשהועבר לו הטקסט Something bad, הלקוח קיבל אותו עם שגיאת 400.
4. מחלקת ValidationError: משכפלים מחלקה קיימת מקובץ ה-errors, והיא מקבלת message ומעבירה אותו הלאה, כי לא ידוע איזו הודעה תגיע (מחיר שלילי, יותר מדי תווים וכדומה).
5. תשובת JSON: new ValidationError עם something bad ב-message מחזיר אובייקט JSON עם message. תמיד רוצים להחזיר ל-frontend JSON, אובייקט או מערך, גם בשגיאות. אפשר גם אובייקט מסועף יותר שמכיל error ובתוכו message.
שימו לב
בשלב הזה ההודעה היא עדיין something bad ולא השגיאה האמיתית, כמו required על title או max length על description. ההודעות האמיתיות נמצאות בתוך modelState, שהוא אובייקט קצת מסועף שלא ברור אם הוא collection או אובייקט ואם יש בו הודעה אחת או כמה. את השליפה שלהן הסרטון הבא מסביר.
אחרי הסרטון תוכלו לעצור בקשה לא חוקית בתוך הפונקציה ולהחזיר 400 עם אובייקט שגיאה משלכם.
השיעור הבא בקורס: הוצאת הודעות השגיאה מתוך ModelState

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

  1. 00:00

    המשתנה modelState ו-isValid

  2. 00:37

    בדיקת ספר חוקי ולא חוקי

  3. 01:10

    החזרת badRequest ליוזר

  4. 02:07

    בניית מחלקת ValidationError

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

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

  1. 00:00

    אוקיי, אז דבר ראשון איך אנחנו יודעים אם הוולידציה הצליחה או נכשלה? יש לנו משתנה שנקרא modelState. מדובר על מצב מבחינת ולידציה וה-modelState אומר לי האם הוולידציה הצליחה או נכשלה.

  2. 00:18

    יש לו isValid ולפי ה-isValid אני יודע אם זה הצליח או נכשל. בואו רגע נציג modelState.isValid על הקונסול ונרשום פה validate ונתחיל לחקור מה, מה יש לו לדבר הזה.

  3. 00:37

    נריץ רגע, ניגש וננסה להוסיף ספר לא חוקי. Go. אנחנו רואים שהוא מוסיף אותו, בקונסול הוא כותב לי validate false כי הוא לא ולידי ונלך ונוסיף ספר חוקי והוא כמובן יוסיף אותו.

  4. 00:52

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

  5. 01:08

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

  6. 01:20

    אז אפשר לבדוק אם not validate פה אני רוצה בעצם להחזיר הודעת שגיאה ליוזר ולא להמשיך. האמת, אנחנו לא צריכים אפילו את הבלוק הזה. בואו נרשום return ויש לנו את badRequest. נניח שב-badRequest, בואו נראה רגע מה הוא מקבל.

  7. 01:43

    נניח שאני שולח לו, בואו ננסה סתם מחרוזת. Something bad. זה אפשר להוריד את הקונסול הזה. אז עשינו פה איזושהי בדיקה קטנה. החזרנו בעצם ליוזר איזושהי מחרוזת something bad.

  8. 01:56

    בוא ננסה מינוס Go והוא מחזיר something bad עם שגיאת ארבע מאות, אז אנחנו כאילו יכולים להחזיר מה שבא לנו. אני לא רוצה להחזיר something bad, אני רוצה להחזיר אובייקט משלי.

  9. 02:11

    יש לנו פה את ה-errors, אז בואו ניקח רגע את המחלקה הזאת, נשכפל אותה ונבנה מחלקה אחרת ונקרא לה ValidationError, שגיאת ולידציה ופשוט יש כל כך הרבה מקרים של שגיאות ולידציה, אז נגיד תקשיב, תביא לי message ואני פשוט אעביר הלאה את ה-message, כי אני לא יודע איזה message אתה הולך להביא לי.

  10. 02:34

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

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

ההרצאה הבאה: הוצאת הודעות השגיאה - מתוך ModelState

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

  • שימוש ב-useEffect - חלק 1
  • שימוש ב-NuGet
  • בדיקות מקרי שימוש
  • שימוש בנתונים מ-CSV

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

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