PracticU

יצירת שירות Web API

בלי כתוביותעם כתוביות
PracticU › קורס MVC › יצירת שירות Web API
מילון מושגים:
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).
REST - סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
PUT - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או להחליף משאב קיים במלואו.
jQuery - ספריית JavaScript ותיקה שמפשטת את הגישה לרכיבי הדף, אירועים ואנימציות בדפדפן.
AJAX - טכניקה שמאפשרת לדף אינטרנט לשלוח ולקבל נתונים מהשרת ברקע ולעדכן את התצוגה בלי לטעון מחדש.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.

יצירת שירות Web API
בשיעור בונים שירות Web API ב-MVC. השירות לא מחזיר דפי HTML אלא מידע בלבד, ולקוח מקבל אותו בפרוטוקול HTTP.
השלבים העיקריים
1. רעיון ה-REST: הפעולה נקבעת לפי הפועל בבקשה. GET מקבל מידע, POST מוסיף, PUT מעדכן, ו-DELETE מוחק. המרצה מציין שמי ששמע על WCF יזהה את הרעיון, אבל ב-Web API הוא בנוי על REST.
2. קונטרולר: יוצרים קונטרולר שיורש מ-ApiController ומחזיר נתונים ולא ActionResult. שם הפונקציה מתחיל במילה של הפועל, למשל GetProducts. הפונקציה עוטפת את הגישה למסד הנתונים ב-try catch.
3. ניתוב: בקובץ WebApiConfig הנתיב מתחיל ב-api, ואחר כך שם הקונטרולר. הלקוח לא מציין את שם הפונקציה, כי המערכת בוחרת אותה לפי הפועל ולפי הפרמטרים.
4. פרמטר ו-ID: פונקציה שמקבלת מזהה מחזירה מוצר אחד בלבד. הפרמטר יכול להגיע בשאילתה או בנתיב.
5. קריאה מ-jQuery: כפתור מפעיל קריאת AJAX לנתיב של השירות, והתשובה מוצגת ברשימה או בתיבה. התשובה חוזרת בפורמט JSON, ואילו הדפדפן מציג XML כשלא מבקשים אחרת.
6. POST, PUT ו-DELETE: כל אחד מהם נכתב כפונקציה נפרדת שמתחילה בפועל המתאים, וכל אחד מקבל את הפרמטרים שהוא צריך.
טעויות נפוצות
בדוגמה נכתב פעם בטעות POST במקום PUT לעדכון, והמוצר נוסף במקום להתעדכן. בבדיקה שנייה, כשהתיבה ריקה, הקריאה ל-DELETE החזירה 404 כי המזהה לא היה נכון, ורק כשנשלח המזהה בתוך הנתיב הפעולה עבדה.
בסוף השיעור יש שירות שמחזיר מידע בלבד, ולקוח שמציג את התוצאה ומבצע עליה פעולות.
השיעור הבא בקורס: שימוש באזורים - Areas
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

להורדת קוד מקור של כל הדוגמאות בקורס MVC – לחץ כאן


פרקי ההרצאה: יצירת שירות Web API

  1. 00:00

    מהו Web API ומושג REST

  2. 01:32

    יצירת קונטרולר Product API

  3. 03:10

    ניתוב Web API בקובץ WebApiConfig

  4. 04:43

    בחירת הפעולה לפי תחילית שם הפונקציה

  5. 05:18

    גלישה לשירות והצגת הנתונים בדפדפן

  6. 06:28

    כפתור שקורא לשירות עם jQuery

  7. 08:31

    קריאת Ajax לשירות Get Products

  8. 09:37

    בניית רשימת מוצרים מתוצאת JSON

תמלול ההרצאה: יצירת שירות Web API

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

  1. 00:00

    אנחנו עוברים לנושא מאוד מעניין שנקרא Web API. Web API זהו סרוויס שאנחנו יכולים לבנות שקיים באתר שלנו כך שמישהו יכול לגלוש אלינו ולקבל בחזרה מידע.

  2. 00:15

    הסרוויס לא מחזיר UI, לא מחזיר Views, הוא מחזיר רק מידע בהתאם לבקשות שהוא מקבל. הדבר הזה מקביל לטכנולוגיות יותר ראשונות כמו Web Service או WCF, כלומר Windows Communication Foundation, אבל מה שמיוחד ב-Web API זה שא' הוא בנוי על טכנולוגיית רסט, כלומר על ורב שאנחנו שולחים לסרדיס.

  3. 00:41

    מה זה ורב? ורב זאת מילה שנמצאת בתוך הרקווסט ומתארת מה ברצוננו לעשות. כמה מילים שבטח נפלתם בהן זה גט ופוסט, אבל יש גם put ויש delete.

  4. 00:56

    מה זה אומר המילים האלה? אם אנחנו שולחים לשירות גט ואומר שאנחנו רוצים לקבל משהו בחברה, אם אנחנו שולחים לשירות פוסט, זה אומר שאנחנו רוצים להוסיף משהו לדאטאבייס.

  5. 01:08

    אם אנחנו שולחים put, זה אומר שאנחנו רוצים לעדכן מידע. אם אנחנו שולחים delete, זה אומר שאנחנו רוצים למחוק מידע. הקונספט הזה שהפעולה בצד של השרת מתבצעת בהתאם לאותה מילה שנקראת ורב, הקונספט הזה נקרא REST או RESTful Service.

  6. 01:27

    ה-Web API בנוי על כל הקונספט הזה. בואו נראה איך אנחנו בדיוק יכולים להרים סרוויץ לאווירי. יש לנו כאן קודם כל קונטרולר שאנחנו צריכים להוסיף.

  7. 01:40

    קונטרולר, נקרא לו product api controller, מפני שזה לא קונטרולר רגיל, זה קונטרולר עבור שירות Web API. עכשיו הקונטרולר הזה קודם כל אמור לרשת מ-api controller.

  8. 02:01

    פה אנחנו כותבים פונקציה, פונקציה לא מחזירה Action Result, היא תחזיר לנו List של Product. כלומר הפונקציה מחזירה מידע טהור. עכשיו, השם של הפונקציה הוא מאוד חשוב.

  9. 02:17

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

  10. 02:34

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

  11. 03:09

    פה סיימנו לבנות את הפונקציה בצד של השרת ששייכת לקונטרולר של Web API. עכשיו, איך בדיוק לקוח גולש לקונטרולר הזה? בואו נסתכל רגע על פתיעת אפ סטארט ונזכר שיש לנו פה ראוטס.

  12. 03:27

    הראוטס הזה שנמצא במחלקה ראוט קונפיג ונרשם בפונקציה רג'יסטר ראוטס, בנוי לקונטרולרים רגילים ולא לקונטרולרים של Web API. לכן אנחנו רואים פה קונטרולר, אנחנו רואים פה Action ואנחנו רואים פה ID.

  13. 03:43

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

  14. 04:05

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

  15. 04:17

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

  16. 04:29

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

  17. 04:43

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

  18. 05:01

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

  19. 05:18

    אז בואו נסתכל קודם איך אנחנו מסוגלים לגלוש. אם אנחנו נריץ את האתר, אנחנו כמובן לא נגיע לשום מקום, נגדיר פה API ואת השם של ה-products API, שזה השם של ה-controller, אז אנחנו הולכים לקבל מידע XMLי, דפדפן מציג אותו כ-XML ואנחנו רואים את כל רשימת המוצרים.

  20. 05:46

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

  21. 05:56

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

  22. 06:24

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

  23. 06:42

    לצורך כך בואו נוסיף עוד קונטרולר נקרא לו ohm יש לנו פה פונקציית אינדקס נגדיר עבורה view זאת אומרת שאנחנו יכולים בגלישה פשוטה לגלוש למשהו שיש לו view בעת מה שאנחנו רוצים לעשות זה לבצע איזשהו לחצן ובלחצן להציג את הנתונים לגלוש מהלחצן לשרת ישירות לשירות הזה לקבל את כל הנתונים ולהציג אותם בואו נרשום פה בעצם בואו נוריד את הדבר הזה נגדיר פה

  24. 07:17

    input type שווה בחן value שווה get all products יש לנו פה סגירה נגדיר כאן סקשן של scripts ונתחיל לעבוד בעזרת jQuery בכדי להירשם ללחצן ולקרוא ב-ajax לשירות נגדיר פה ID נקרא לו btn get all products נירשם בדוקימנט רדי צריך להיות קודם כל בתוך script בשביל שזה יעבוד נירשם בדוקיומנט רדי לאירוע הלחצן,

  25. 08:18

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

  26. 08:49

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

  27. 09:09

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

  28. 09:25

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

  29. 09:47

    בואו נייצר כאן למעלה Unordered List. ניתן ל-Unordered List ID, נגדיר אותה כ-Product List, נרוץ בלולאה על כל הנתונים, מפני שאנחנו הולכים לקבל מערך שלם, ומה שנעשה פה זה על כל פריט במערך שאנחנו קיבלנו, כמובן המידע יגיע אוטומטית ב-JSON בצד של הלקוח, אנחנו ב-JQuery נבנה הוספה ל-Unordered

  30. 10:31

    List. מה אנחנו רוצים להוסיף לתוך ה-Unordered List? כמובן בליסט אייטם בואו ניגש לכל אחד מהפריטים

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

ההרצאה הקודמת: ממשק מותאם למובייל MVC

ההרצאה הבאה: שימוש באזורים - Areas

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

  • הסבר על מה זה Web API
  • הגדרת שירות SAMBA
  • יצירת פרויקט REST API
  • Web Elements - חלק 1

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

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