
The title field is required, וספר בלי title וגם בלי description מחזיר שתי שגיאות באוסף. אבל מחיר שלילי נכנס ל-database בלי בעיה. גם אילוץ ב-database לא פותר את זה: הוא יזרוק exception, והלקוח יקבל שגיאה 500, כלומר קריסת שרת, בלי לדעת מה הבעיה שלו.title מוגדר כ-string בלי סימן שאלה, ולכן הוא שדה חובה. כשהמרצה הוסיף ?, ה-migration הפך את השדה ל-allow null, והמערכת עברה את הבדיקה, אבל ה-database סירב ונוצרה שגיאת 500. זו חריגה שלא רוצים, כי הבעיה היא של הלקוח ולא של השרת.required עם הודעה משלנו: לכל מאפיין (title, description, price) מגדירים required עם error message, למשל "Missing book title".min_length ל-title של 2 תווים, ול-description של 10, ו-max_length של 50 ל-title ושל 2500 ל-description, כל אחד עם הודעה. title של האות J בלבד נדחה, ו-JS התקבל..*, ואמר שאין צורך להכיר Regex כרגע אך כדאי להשלים. ABC התקבל. המרצה ציין שהכלל הזה פחות הגיוני, כי "Seven Ways to Success" נדחה.range על המחיר: מאפס ועד גבול עליון שנראה הגיוני לחנות ספרים (אלף), עם הודעה. מחיר של מינוס 100 נדחה, כמו גם 2,100, ו-100 עבר.trace ID. זה נראה כמו פיתוח ולא כמו production. המרצה רוצה לשלוט במה שמוחזר ל-front: מערך או מחרוזת עם השגיאות, או רק הראשונה, ולכן הנושא הבא הוא מניעת הבדיקה האוטומטית.הטקסט המלא של הדקות הראשונות בהרצאה «שגיאות וולידציה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הסוג הבא של השגיאות שאנחנו רוצים לטפל בהן זה סוג שנקרא Bad Request. הסטטוס הזה ארבע מאות, וזה בעצם מתאר כל שגיאה שנחשבת שגיאת ולידציה. ולידציה זה אומר אימות קלט המשתמש.
זה מתבצע כאשר המשתמש רוצה להוסיף או לעדכן. אם המשתמש רוצה להוסיף משהו, בוא נגיד הוא רוצה להוסיף ספר אבל שולח לי מידע שגוי, לדוגמה מחיר שלילי. הנה זה פה.
אז אם הוא שולח מחיר שלילי, האם המחיר הזה יתווסף לדאטה בייס? אנחנו לא רוצים להוסיף ספר עם מחיר שלילי או הוא לא שולח שום דבר ב-title. שולח ככה.
אין לי title לספר. מותר להוסיף ספר בלי שם של ספר? ממש לא. אז מה יקרה אם נעשה את זה? אז כל הדברים האלה זה בעצם Bad Request או שגיאות ולידציה.
הסטטוס אמור להיות ארבע מאות, ובואו נראה איך המערכת מתנהגת. אם אני כרגע אוסיף, אה, ספר חוקי הוא אמור להתווסף בהצלחה. בואו ננסה להוסיף ספר בלי title.
נבצע גלישה ונקבל באמת Bad Request. איכשהו הצלחנו, המערכת הצליחה לגלות שיש פה איזושהי בעיה. שלחה לנו פה איזשהו אובייקט. יש לי פה type.
לא יודע בדיוק מה זה ה-type. אני לא ממש רוצה להחזיר את זה למשתמש, אבל לא משנה. title, one or more validation errors occurred.
אוקיי, שימו לב, בדיקות ולידציה זה לא ה-title הזה לא קשור. במקרה זה title. סטטוס ארבע מאות errors של ה-title שלנו, של הספר The title field is required.
זה מה שכתוב לי. בואו ננסה גם לא לשלוח description. Go. והוא אומר לי שיש לי שתי שגיאות. אחד title של הספר חסר ואחד ה-description חסר.
אה, סבבה, זה ממש בסדר. הוא החזיר ליוזר איזשהו collection כזה של שגיאות. בסדר, נניח שזה מתאים לי. טוב, בואו נחזיר אותם בחזרה וננסה לשלוח משהו עם מחיר שלילי.
אז יש לי title, יש לי description, מחיר שלילי. בוא תוסיף לי בבקשה את הספר, והוא אומר לי "הכול בסדר, הוספתי". מה?
יש בדאטה בייס עכשיו ספר עם מחיר שלילי? בואו נסתכל. כן. אז אם הדאטה בייס הזה, האם הדאטה בייס היה מצליח להגן על זה ולא מסכים להכניס מחיר שלילי, כי היינו מגדירים איזשהו אילוץ בתוך הדאטה בייס, אז מה שהיה קורה, הדאטה בייס היה מעלה חריגה, exception.
האתר היה זורק ל-front שגיאת exception. exception זה שגיאת חמש מאות וזה אומר שהשרת קרס, אבל אנחנו לא רוצים שהשרת יקרוס. אז גם אם הדאטה בייס היה בודק ואומר לי, "תקשיב, יש פה, אני לא מסכים, אני קורס לך", אז היוזר יקבל קריסת שרת ויגיד, "מה זה השרת המוזר הזה?
הוא קורס לי". הרי היוזר לא יודע מה הבעיה. הוא, מבחינתו זה בסדר. מחיר שלילי זה בסדר. אחרת למה הוא שלח לי?
אולי הוא התבלבל, אבל הוא שלח מחיר שלילי. אז אני לא רוצה שהשרת יקרוס ואני לא רוצה שבטח הוא יאשר לי להוסיף את המחיר השלילי. אני רוצה למנוע את כל שגיאות הוולידציה האלה.
חלק אוטומטית המערכת מצליחה לגלות וחלק לא. דרך אגב, למה היא הצליחה לגלות? כי המודל שלנו, בואו נסתכל רגע על המודל book. המודל book אמר ש-title מבחינתו זה שדה