PracticU

ביצוע ולידציה על Route Parameters

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › ביצוע ולידציה על Route Parameters
מילון מושגים:
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.

ביצוע ולידציה על Route Parameters
גם הפרמטרים שבכתובת, כמו ה-ID בנתיב, צריכים בדיקה. הלקוח יכול לשלוח ערך שאינו מספר, כמו abc, או מספר שלילי.
שתי דרכים לבדוק
1. סכמה נפרדת ל-ID: בונים סכמה שבודקת רק את המזהה: מספר חובה, לא קטן מ-0. בודקים אותה על אובייקט מוצר זמני שמכיל רק את ה-ID. אם יש שגיאה מחזירים 400, ואם הכל תקין מחזירים את המוצר שנמצא. זו הדרך המדויקת יותר, כי ההודעות של ג'וי נשמרות.
2. ביטוי רגולרי בראוט: בהגדרת הראוט מוסיפים בסוגריים ביטוי רגולרי, למשל ספרה אחת או יותר. ערך שלא עומד בביטוי לא נתפס על ידי הראוט, והשרת מחזיר "Route not found" עם 404.
מה רואים בפועל
1. מזהה מינוס 78 נדחה עם הודעה על מינימום 0 בשיטה הראשונה.
2. מזהה ABC נדחה עם "ID must be a number" בשיטה הראשונה.
3. בשיטה השנייה אותם ערכים מקבלים 404 במקום 400, כי הראוט בכלל לא נתפס.
השיטה הראשונה נותנת הודעות מדויקות יותר, והשנייה קלה יותר לכתיבה. בשתיהן הפרמטר בנתיב נבדק לפני שהנתונים נשלפים.
השיעור הבא בקורס: התאמה אישית של הודעות שגיאה

פרקי ההרצאה: ביצוע ולידציה על Route Parameters

  1. 00:00

    ולידציה לפרמטר ה-ID בכתובת

  2. 00:43

    שתי דרכים לטפל ב-ID לא חוקי

  3. 01:44

    סכמה נפרדת שבודקת רק את ה-ID

  4. 02:27

    בדיקת ה-ID לפני חיפוש המוצר

  5. 03:21

    החזרת 400 או המוצר שנמצא

תמלול ההרצאה: ביצוע ולידציה על Route Parameters

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

  1. 00:03

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

  2. 00:27

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

  3. 00:43

    ויכול להיות שאתם יכולים להגיד, רגע, אני רוצה בכלל להתעלם מ-ABC, או להגיד לו, תשמע, אין לי ראוט כזה, או לתת לו איזשהו אילוץ יותר מחמיר לגבי ID ABC או כל מחרוזת אחרת. אז אם זה המצב, אז יש לנו שתי שיטות לתקוף את הבעיה.

  4. 01:02

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

  5. 01:26

    זאת אומרת שיש לנו פה קצת טיפה extra work שאנחנו צריכים לעשות עבור המשימה הזאת. אולי נראה דוגמא איך אפשר לעשות את זה. אנחנו יכולים לשכפל את הוולידציה, אני אשים אותה פה ראשונה ואני אקרא לה route ID validation schema ויש לנו את הוולידציה של ה-ID הזאת שהוא מספר והוא required והוא מינימום וה-name הוא רק סטרינג, ה-price הוא רק number וה-stock הוא רק

  6. 02:02

    number. אפשר אפילו לרשום כאן אופציונל, כלומר, אפילו הוא לא חייב שהוא יהיה, אפילו לא מעניין אותי אם הוא נאמבר או לא, הוא אופציונלי.

  7. 02:13

    וכאן יש לנו את ה-RouteValidationSכמה, אנחנו יכולים לשכפל את הבדיקה הזאת ולכתוב בדיקה שנקראת ValidateRouteID, נגדיר כאן את RouteIDValidationSכמה, ועכשיו יש לנו כאילו עוד בדיקה במוצר שבודק רק את ה-RouteID בלבד.

  8. 02:39

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

  9. 02:57

    אז בואו נייצר const product שווה new product עם פי גדולה, ניתן לו את ה-ID וניתן לו undefined בשלושת החבר'ה האחרים. אבל עכשיו אני יכול להשתמש בפרודקט הזה בשביל לבצע את אותה בדיקה שעשינו כאן עם ה-errors.

  10. 03:18

    בואו נעתיק אותה לפה ואם יש לי פה את הוולידציה של validate route ID, אם הוא החזיר לי שגיאה תחזיר לי 400 כי יש פה באמת בעיה של היוזר.

  11. 03:33

    כאן אנחנו יכולים לקחת את המוצר השני, כן, המוצר שהוחזר, אני לא יכול להשתמש באותו השם, אז נקרא לו Found Product. אם באמת נמצא מוצר כזה, אני מחזיר את ה-Found Product, המוצר שנמצא.

  12. 03:49

    אז הנה יש לנו עכשיו תוספת של ולידציה עבור ה-Route Parameter. בואו נבדוק את זה. נעצור, נריץ, ניגש ל-Postman, ניגש לפה, אם נחפש מוצר 78 נקבל אבל נחפש מוצר מינוס 78 ונקבל ID must be larger than or equal to 0. זה הוולידציה עכשיו שעשינו עשה את זה.

  13. 04:14

    נשלח לו ABC נגיד נקבל ID must be a number

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

ההרצאה הקודמת: ביצוע ולידציה על PATCH Requests

ההרצאה הבאה: התאמה אישית של הודעות שגיאה

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

  • Routing Parameters
  • ולידציה - Validation
  • Validation - ולידציה
  • ריאקט - Blocking Backend Route

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

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