
find מחזירה undefined כשאין מוצר כזה. לכן שולחים response.sendStatus(404) ומוסיפים return, כדי שהפונקציה תיעצר ולא תמשיך לכתוב תשובה נוספת.use שמחזיר 404 כשאף ראוט לא תפס את הבקשה. כך כל כתובת לא קיימת מקבלת תשובה ברורה ולא דף HTML של אקספרס.הטקסט המלא של הדקות הראשונות בהרצאה «טיפול במקרה של Resource Not Found» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שהצלחנו להרים RESTful Service להעביר, הצלחנו לטפל בגט, פוסט, פוט, פאץ', דיליט, יש לנו עדיין לטפל בכל הנושא של השגיאות. כי כל מה שטיפלנו זה מקרים של הצלחות, אבל מה בעצם קורה אם היוזר לדוגמה גולש מאיזשהו מקום שלא קיים?
מה קורה אם הוא גולש ל-resource שלא קיים? מה קורה אם יש exception בשרת? אז בסרטון הזה אנחנו הולכים לראות כל מיני דברים, בעיקר איך לטפל בחריגות.
אקספצ'ן. אז אמרנו, יש שלושה סוגי שגיאות נפוצות שאנחנו צריכים לטפל בהם. שגיאת 404, שגיאת 400 ושגיאת 500. שגיאת 404 זה אומר Not Found.
הנה לדוגמה כאן, טיפלנו באחד הסרטונים, במצב שבכלל היוזר גולש לי לאיפשהו ריסורס שבכלל אין לי, API/customers או שהוא כתב פרודקצים שגיאה או שהוא לא כתב פה API אם הוא גלש לאיזשהו ריסורס שהראוט שלו לא קיים אז אנחנו מקבלים את הראוט הזה ואנחנו מחזירים 404 זה בסדר אבל מה קורה אם היוזר גולש לאיזשהו ID שלא
קיים כאן זה אומר רק במקרים שבו הוא נתן לי ID. אז יש פה כמה מקרים, בואו נגיד שהוא גלש ל-GetOneProduct וב-GetOneProduct אין לו בעצם ID כזה. אז מה קורה?
אז הנה קיבלנו את ה-ID מהיוזר, הוא נתן לו ID 300, אין לי מוצר 300, מה בעצם הפונקציה GetOneProduct מחזירה לי? אם אתם לוחצים קונטרול ומרחפים עליה, אז היא הופכת להיות לינק.
אני מקליק עליה ואז אני רואה שיש לי שני אזכורים, רואים את זה פה, שני אזכורים לשם get one product asking או כפונקשן או אזכור שני כנראה שזה באקספורטס אז אני מקליק על הפונקשן ואז הוא מביא אותי ישירות לפונקשן ואז אני יכול לראות מה בעצם יש פה.
אז קיבלנו את כל המוצרים מהקובץ, חיפשתי ואני יודע שהפונקציה הזאת find returns undefined if not found ולכן אם המוצר נמצא מוחזר לי אובייקט של המוצר ואם לא מוחזר לי undefined אם מוחזר לי undefined פה יש undefined כל מה שאני צריך לעשות זה לא להחזיר undefined ליוזר אלא אם not product הוא לא נמצא רספונס נקודה send סטטוס 404 אנחנו יכולים
לעשות סטטוס 404 ואז לשלוח איזושהי הודעה נוספת שאומרת לו תשמע חיפשת איזה ID שהוא לא קיים אבל זה לא נדרש אפשר פשוט להחזיר sendStatus ולהגיד לו תשמע 404 תבין לבד המוצר שגלשת אליו לא קיים ו-return כי זה שעשינו response.sendStatus לא מסיים את הפונקציה ואז אוטומטית יהיה לי פה עוד ריספונס אז חשוב ה-return שהוא יצא מהפונקציה הזאת איפה עוד
יש לנו טיפול בזה בואו נמשיך לתייר ונראה שגם באפדייט פול ובאפדייט פרשל אנחנו מקבלים ID. בשני המקרים האלה אנחנו הולכים לאפדייט פרודקט אסינק, בואו ניכנס אליה, הנה הפונקציה, אפדייט פרודקט אסינק, ובמידה והמוצר לא קיים אנחנו מחזירים נא"ל.
גם כאן יכלנו להחזיר undefined, זה בסדר, אבל פה במקרה הזה יותר הגיוני להחזיר נא"ל. נא"ל מציין, תשמע, אין לי מידע. גם undefined, אבל נא"ל זה קצת יותר מקצועי, כי אני שולט על מה להחזיר.