
abc, או מספר שלילי.ABC נדחה עם "ID must be a number" בשיטה הראשונה.הטקסט המלא של הדקות הראשונות בהרצאה «ביצוע ולידציה על Route Parameters» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שביצענו ולידציה עבור פוסט, עבור פוט ועבור פאץ', נשאר לנו לבצע ולידציה עבור ID הזה. הרי כאן בגט היוזר יכול לשלוח ID שלא קיים, וזה בסדר, אנחנו מחזירים לו 404, או ID שהוא לא חוקי.
אז אתם יכולים להגיד, אוקיי, אם הוא לא חוקי, לדוגמה אם היוזר שולח את המחרוזת ABC, אני גם יכול להגיד לו, תשמע, המוצר לא קיים, אין לי מוצר עם ID ABC. ואם זה המדיניות והמוצר שלכם או בשירות שלכם, אז זה בסדר.
ויכול להיות שאתם יכולים להגיד, רגע, אני רוצה בכלל להתעלם מ-ABC, או להגיד לו, תשמע, אין לי ראוט כזה, או לתת לו איזשהו אילוץ יותר מחמיר לגבי ID ABC או כל מחרוזת אחרת. אז אם זה המצב, אז יש לנו שתי שיטות לתקוף את הבעיה.
שיטה אחת זה פשוט לגשת ולבנות פה עוד סכמה שיודעת לבדוק רק את ה-ID ומתעלמת מכל היתר ואז לכתוב פונקציה שמבצעת את הוולידציה הזאת אבל זה דורש מאיתנו לבנות אובייקט כזה עם ID ולבצע ולידציה.
זאת אומרת שיש לנו פה קצת טיפה extra work שאנחנו צריכים לעשות עבור המשימה הזאת. אולי נראה דוגמא איך אפשר לעשות את זה. אנחנו יכולים לשכפל את הוולידציה, אני אשים אותה פה ראשונה ואני אקרא לה route ID validation schema ויש לנו את הוולידציה של ה-ID הזאת שהוא מספר והוא required והוא מינימום וה-name הוא רק סטרינג, ה-price הוא רק number וה-stock הוא רק
number. אפשר אפילו לרשום כאן אופציונל, כלומר, אפילו הוא לא חייב שהוא יהיה, אפילו לא מעניין אותי אם הוא נאמבר או לא, הוא אופציונלי.
וכאן יש לנו את ה-RouteValidationSכמה, אנחנו יכולים לשכפל את הבדיקה הזאת ולכתוב בדיקה שנקראת ValidateRouteID, נגדיר כאן את RouteIDValidationSכמה, ועכשיו יש לנו כאילו עוד בדיקה במוצר שבודק רק את ה-RouteID בלבד.
אז כאן, אחרי שיש לנו את ה-ID, אני לא רוצה לבדוק את האובייקט הזה, כי האובייקט הזה כבר נמצא אחרי שבוצעה פעולה בדאטאבייס, אני רוצה לבדוק אותו לפני, אבל אין לי פה אובייקט של מוצר.
אז בואו נייצר const product שווה new product עם פי גדולה, ניתן לו את ה-ID וניתן לו undefined בשלושת החבר'ה האחרים. אבל עכשיו אני יכול להשתמש בפרודקט הזה בשביל לבצע את אותה בדיקה שעשינו כאן עם ה-errors.
בואו נעתיק אותה לפה ואם יש לי פה את הוולידציה של validate route ID, אם הוא החזיר לי שגיאה תחזיר לי 400 כי יש פה באמת בעיה של היוזר.
כאן אנחנו יכולים לקחת את המוצר השני, כן, המוצר שהוחזר, אני לא יכול להשתמש באותו השם, אז נקרא לו Found Product. אם באמת נמצא מוצר כזה, אני מחזיר את ה-Found Product, המוצר שנמצא.
אז הנה יש לנו עכשיו תוספת של ולידציה עבור ה-Route Parameter. בואו נבדוק את זה. נעצור, נריץ, ניגש ל-Postman, ניגש לפה, אם נחפש מוצר 78 נקבל אבל נחפש מוצר מינוס 78 ונקבל ID must be larger than or equal to 0. זה הוולידציה עכשיו שעשינו עשה את זה.
נשלח לו ABC נגיד נקבל ID must be a number