PracticU

שימוש ב-ModelState

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › שימוש ב-ModelState
מילון מושגים:
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.

שימוש ב-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

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

לקורס המלא: קורס דוט נט NET Core. אונליין

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

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

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

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

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

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