PracticU

טיפול במקרה של Resource Not Found

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › טיפול במקרה של Resource Not Found
מילון מושגים:
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
תגובה - המידע שהשרת מחזיר ללקוח בתשובה לבקשה, הכולל בדרך כלל נתונים וקוד סטטוס.
Middleware - שכבת תוכנה שמתווכת בין רכיבים ומטפלת בבקשות בדרכן, למשל לאימות, רישום לוג או עיבוד נתונים.
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

טיפול במקרה של Resource Not Found
בשלב הזה בודקים מה השרת מחזיר כשהלקוח מבקש מוצר שלא קיים, או כתובת שאין לה ראוט. התשובה הנכונה לשני המקרים היא 404, שמודיעה ללקוח שהמשאב לא נמצא.
מוצר שלא קיים
1. ID לא קיים: הפונקציה find מחזירה undefined כשאין מוצר כזה. לכן שולחים response.sendStatus(404) ומוסיפים return, כדי שהפונקציה תיעצר ולא תמשיך לכתוב תשובה נוספת.
2. עדכון: גם ב-update, אם המוצר המעודכן לא נמצא, מחזירים 404.
3. מחיקה: במחיקה מחזירים 204 (ללא תוכן) גם כשאין מה למחוק, לפי המוסכמה, כי המצב הרצוי כבר מתקיים.
כתובת שלא קיימת
1. middleware כללי: מוסיפים use שמחזיר 404 כשאף ראוט לא תפס את הבקשה. כך כל כתובת לא קיימת מקבלת תשובה ברורה ולא דף HTML של אקספרס.
2. בדיקה: אותה תשובה מתקבלת גם לבקשות PATCH ו-DELETE לכתובות לא קיימות.
ה-404 מוחזר גם כשהנתיב לא קיים וגם כשהמשאב לא קיים. בשלב הבא מטפלים בשגיאות 400.
השיעור הבא בקורס: ביצוע ולידציה על POST Requests

פרקי ההרצאה: טיפול במקרה של Resource Not Found

  1. 00:00

    סוגי שגיאות 404, 400 ו-500

  2. 00:56

    שגיאת 404 לריסורס שלא קיים

  3. 01:43

    מוצר שלא נמצא: חיפוש שמחזיר undefined

  4. 02:38

    שליחת 404 והחזרת return מהפונקציה

  5. 03:17

    עדכון מוצר שלא קיים: החזרת null

תמלול ההרצאה: טיפול במקרה של Resource Not Found

הטקסט המלא של הדקות הראשונות בהרצאה «טיפול במקרה של Resource Not Found» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    אז אחרי שהצלחנו להרים RESTful Service להעביר, הצלחנו לטפל בגט, פוסט, פוט, פאץ', דיליט, יש לנו עדיין לטפל בכל הנושא של השגיאות. כי כל מה שטיפלנו זה מקרים של הצלחות, אבל מה בעצם קורה אם היוזר לדוגמה גולש מאיזשהו מקום שלא קיים?

  2. 00:29

    מה קורה אם הוא גולש ל-resource שלא קיים? מה קורה אם יש exception בשרת? אז בסרטון הזה אנחנו הולכים לראות כל מיני דברים, בעיקר איך לטפל בחריגות.

  3. 00:39

    אקספצ'ן. אז אמרנו, יש שלושה סוגי שגיאות נפוצות שאנחנו צריכים לטפל בהם. שגיאת 404, שגיאת 400 ושגיאת 500. שגיאת 404 זה אומר Not Found.

  4. 00:53

    הנה לדוגמה כאן, טיפלנו באחד הסרטונים, במצב שבכלל היוזר גולש לי לאיפשהו ריסורס שבכלל אין לי, API/customers או שהוא כתב פרודקצים שגיאה או שהוא לא כתב פה API אם הוא גלש לאיזשהו ריסורס שהראוט שלו לא קיים אז אנחנו מקבלים את הראוט הזה ואנחנו מחזירים 404 זה בסדר אבל מה קורה אם היוזר גולש לאיזשהו ID שלא

  5. 01:26

    קיים כאן זה אומר רק במקרים שבו הוא נתן לי ID. אז יש פה כמה מקרים, בואו נגיד שהוא גלש ל-GetOneProduct וב-GetOneProduct אין לו בעצם ID כזה. אז מה קורה?

  6. 01:44

    אז הנה קיבלנו את ה-ID מהיוזר, הוא נתן לו ID 300, אין לי מוצר 300, מה בעצם הפונקציה GetOneProduct מחזירה לי? אם אתם לוחצים קונטרול ומרחפים עליה, אז היא הופכת להיות לינק.

  7. 01:57

    אני מקליק עליה ואז אני רואה שיש לי שני אזכורים, רואים את זה פה, שני אזכורים לשם get one product asking או כפונקשן או אזכור שני כנראה שזה באקספורטס אז אני מקליק על הפונקשן ואז הוא מביא אותי ישירות לפונקשן ואז אני יכול לראות מה בעצם יש פה.

  8. 02:17

    אז קיבלנו את כל המוצרים מהקובץ, חיפשתי ואני יודע שהפונקציה הזאת find returns undefined if not found ולכן אם המוצר נמצא מוחזר לי אובייקט של המוצר ואם לא מוחזר לי undefined אם מוחזר לי undefined פה יש undefined כל מה שאני צריך לעשות זה לא להחזיר undefined ליוזר אלא אם not product הוא לא נמצא רספונס נקודה send סטטוס 404 אנחנו יכולים

  9. 02:53

    לעשות סטטוס 404 ואז לשלוח איזושהי הודעה נוספת שאומרת לו תשמע חיפשת איזה ID שהוא לא קיים אבל זה לא נדרש אפשר פשוט להחזיר sendStatus ולהגיד לו תשמע 404 תבין לבד המוצר שגלשת אליו לא קיים ו-return כי זה שעשינו response.sendStatus לא מסיים את הפונקציה ואז אוטומטית יהיה לי פה עוד ריספונס אז חשוב ה-return שהוא יצא מהפונקציה הזאת איפה עוד

  10. 03:25

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

  11. 03:45

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

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: טיפול בחריגות - NodeJS Exceptions

ההרצאה הבאה: ביצוע ולידציה על POST Requests

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

  • Dimension Resource
  • Logical NOT Operator
  • טיפול בערכי NULL
  • שלבי טיפול בפריצה

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

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React