PracticU

בעיות בניתובים
דוט נט NET Core.

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › בעיות בניתובים דוט נט NET Core.
בעיות בניתובים דוט נט NET Core.
מוסיפים עוד נתיב ל-REST API - קבלת מדינה לפי שם - ונתקלים בבעיה נפוצה של התנגשות ניתובים (Route Conflict).
השלבים העיקריים
1. הוספת נתיב חדש: משכפלים את הקוד הקיים של "מדינה לפי קוד" ומשנים אותו לחפש לפי name במקום code, עם SingleOrDefault (כי אין שתי מדינות עם אותו שם).
2. בעיית Route Conflict: אם שני הנתיבים מוגדרים באותו פורמט (למשל api/countries/{code} ו-api/countries/{name}), המערכת לא מצליחה להבדיל ביניהם ומחזירה שגיאת Ambiguous Match - כי אין לה דרך לדעת אם הערך שנשלח הוא קוד או שם, גם אם שמות הפרמטרים שונים.
3. הפתרון: נותנים לכל נתיב תחילית שונה ומפורשת, למשל country-by-code/{code} ו-country-by-name/{name}, כך שהמערכת יכולה להבחין בין הנתיבים לפי הכתובת עצמה, לא רק לפי שם הפרמטר.
4. בדיקה: בודקים שכל אחד מהנתיבים עובד - קבלת מדינה לפי קוד, לפי שם, ושהחיפוש אינו תלוי רישיות (case sensitivity).
שימו לב
כאשר ה-REST API מינימלי וקטן, נוח לבנות אותו עם כמה נתיבים ישירים בפורמט הזה - אך חשוב לוודא שלכל שילוב של method ו-Route יש כתובת ייחודית, כדי למנוע התנגשות.
בסיום ההרצאה יש שלושה נתיבים עובדים: כל המדינות, מדינה לפי קוד, ומדינה לפי שם.
השיעור הבא בקורס: התקנה ושימוש ב-Postman לבדיקת ה-REST API
מילון מושגים:
נתיב – מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
REST – סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
API – ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
ראוט – הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה; גם מסלול שדרכו עוברות חבילות ברשת.
פרמטר – ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
מתודה – פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
Postman – כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.

פרקי ההרצאה: בעיות בניתובים דוט נט NET Core.

  1. 00:00

    הוספת ראוט מדינה לפי Name

  2. 01:01

    שגיאת Route Conflict

  3. 01:37

    פתרון עם ראוטים נפרדים

  4. 02:10

    בדיקת הראוטים

תמלול ההרצאה: בעיות בניתובים דוט נט NET Core.

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

  1. 00:02

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

  2. 00:17

    בואו רגע נשכפל את כל הקוד הזה, ונגיד לו, תשמע, אנחנו עושים map get, תמפה לי get request, הנה הנתיב, אבל כמובן זה לא קוד, אלא... name, ואם אתה גולש לזה, אז אני רוצה שיהיה לי name code, בוא נשים אותו פה, נקודה name, ול-name code, ל-lower, name code, תביא לי פה את ה-name, והנה ה-country,

  3. 00:51

    singular default, כי אין לנו שתי מדינות עם אותו השם, אז יכול להיות singular default, תחפש לי אותו ותחזיר לי. אנחנו באים ואומרים לו תקשיב, אני רוצה שתמצא לי את IL.

  4. 01:04

    הוא אומר לי, תקשיב, יש לך פה שגיאה? הנה. זה שוב פעם, Route Conflict or Ambiguous Match. למה? אם תסתכלו על זה, זה מאוד הגיוני. מה אנחנו שולחים כאן?

  5. 01:20

    איזשהו קוד? אולי זה Name? אולי יש מדינה שנקראת IL ולא קוד? איך המערכת אמורה לדעת? אז יש פה איזשהו Route Conflict. היא אפילו שהשם של המשתנים שונה, עדיין, המערכת לא יודעת אם ה-i, l הזה, זה בעצם קוד, ואנחנו רוצים להיכנס לכאן, או שזה שם, ואנחנו רוצים להיכנס לכאן.

  6. 01:41

    אז אם זה קורה, אנחנו חייבים למצוא ראוט אחר, ולא באותו פורמט, אז בואו נשנה את זה, country by name. אני אשאיר את ה-countrys code, למרות שאכלנו גם לשנות את זה, ל-country by code, וזה country by name, זה גם בסדר.

  7. 01:59

    אבל בואו נשאר כבר עם country slash code, כי באמת מקובל ברסט API שקודים או IDs בעצם אפשר לשלוח לכאן, אפשר להשאיר את זה ככה, אפשר גם country by code, זה גם בסדר.

  8. 02:14

    עכשיו אנחנו יכולים לראות שזה בעצם כן אמור לעבוד כמו שצריך, בואו רגע נחבא, נוריד, go go go, יופי. הנה רשימת כל המדינות, slash IL.

לקורס המלא: קורס דוט-נט - NET Core. - עם Rest API

ההרצאה הקודמת: החזרת אובייקט ב-JSON

ההרצאה הבאה: התקנה ושימוש ב-Postman - לבדיקת ה-REST API

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

  • הסבר על Console - דוט-נט Framework vs Core
  • הסבר על WinForms - דוט-נט Framework vs Core
  • יצירת שאילתות View - דוט-נט Core
  • בעיות ואתגרים שיש בענן

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

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio