
modelState: מייצג את מצב הוולידציה, ויש לו isValid שאומר אם היא הצליחה או נכשלה.modelState.isValid לקונסול. ספר לא חוקי הדפיס false וספר חוקי הדפיס true. שני הספרים נוספו, כי רק הצגנו את הערך ולא עצרנו את הפונקציה.return עם badRequest. הוא מקבל כל דבר: כשהועבר לו הטקסט Something bad, הלקוח קיבל אותו עם שגיאת 400.ValidationError: משכפלים מחלקה קיימת מקובץ ה-errors, והיא מקבלת message ומעבירה אותו הלאה, כי לא ידוע איזו הודעה תגיע (מחיר שלילי, יותר מדי תווים וכדומה).new ValidationError עם something bad ב-message מחזיר אובייקט JSON עם message. תמיד רוצים להחזיר ל-frontend JSON, אובייקט או מערך, גם בשגיאות. אפשר גם אובייקט מסועף יותר שמכיל error ובתוכו message.something bad ולא השגיאה האמיתית, כמו required על title או max length על description. ההודעות האמיתיות נמצאות בתוך modelState, שהוא אובייקט קצת מסועף שלא ברור אם הוא collection או אובייקט ואם יש בו הודעה אחת או כמה. את השליפה שלהן הסרטון הבא מסביר.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-ModelState» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אוקיי, אז דבר ראשון איך אנחנו יודעים אם הוולידציה הצליחה או נכשלה? יש לנו משתנה שנקרא modelState. מדובר על מצב מבחינת ולידציה וה-modelState אומר לי האם הוולידציה הצליחה או נכשלה.
יש לו isValid ולפי ה-isValid אני יודע אם זה הצליח או נכשל. בואו רגע נציג modelState.isValid על הקונסול ונרשום פה validate ונתחיל לחקור מה, מה יש לו לדבר הזה.
נריץ רגע, ניגש וננסה להוסיף ספר לא חוקי. Go. אנחנו רואים שהוא מוסיף אותו, בקונסול הוא כותב לי validate false כי הוא לא ולידי ונלך ונוסיף ספר חוקי והוא כמובן יוסיף אותו.
נלך לקונסול ונראה validate true. למה הוא הוסיף את שני הספרים? למה הוא הוסיף גם את זה של הפולס? כמובן, כי אנחנו לא עצרנו את בדיקת הוולידציה בצורה אוטומטית, אלא אמרנו לו עזוב, כנס, אני אבדוק ולידציה, כנס.
אנחנו לא באמת בדקנו, רק הצגנו את זה על הקונסול והוא המשיך והוסיף את הספר גם אם יש לו שגיאות ולידציה. אבל יש לנו עכשיו את המשתנה הזה שאומר האם הוולידציה נכשלה כן או לא.
אז אפשר לבדוק אם not validate פה אני רוצה בעצם להחזיר הודעת שגיאה ליוזר ולא להמשיך. האמת, אנחנו לא צריכים אפילו את הבלוק הזה. בואו נרשום return ויש לנו את badRequest. נניח שב-badRequest, בואו נראה רגע מה הוא מקבל.
נניח שאני שולח לו, בואו ננסה סתם מחרוזת. Something bad. זה אפשר להוריד את הקונסול הזה. אז עשינו פה איזושהי בדיקה קטנה. החזרנו בעצם ליוזר איזושהי מחרוזת something bad.
בוא ננסה מינוס Go והוא מחזיר something bad עם שגיאת ארבע מאות, אז אנחנו כאילו יכולים להחזיר מה שבא לנו. אני לא רוצה להחזיר something bad, אני רוצה להחזיר אובייקט משלי.
יש לנו פה את ה-errors, אז בואו ניקח רגע את המחלקה הזאת, נשכפל אותה ונבנה מחלקה אחרת ונקרא לה ValidationError, שגיאת ולידציה ופשוט יש כל כך הרבה מקרים של שגיאות ולידציה, אז נגיד תקשיב, תביא לי message ואני פשוט אעביר הלאה את ה-message, כי אני לא יודע איזה message אתה הולך להביא לי.
כל שגיאה שתביא לי, מחיר שלילי, אסור להכניס יותר מדי תווים. לא יודע, תביא לי וזאת תהיה הודעת השגיאה, אבל יש לנו אובייקט שמייצג אותה ואנחנו