PracticU

מוסכמות ב-REST API

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › מוסכמות ב-REST API
מוסכמות ב-REST API
בהרצאה זו עוברים על המוסכמות המקובלות ב-REST API - אילו method ו-Route נכון להשתמש עבור כל פעולה נפוצה, ומה השרת מחזיר במקרה של הצלחה או כישלון.
השלבים העיקריים
1. קבלת כל הפריטים: GET לנתיב /api/books, בלי גוף בקשה. בהצלחה מוחזר קוד 200 ו-JSON array עם כל הספרים.
2. קבלת פריט בודד לפי ID: GET לנתיב /api/books/<id> (ה-ID הוא חלק מהנתיב). בהצלחה מוחזר קוד 200 ו-JSON object של הפריט המבוקש.
3. הוספת פריט חדש: POST לאותו נתיב /api/books, עם גוף הבקשה שמכיל את פרטי הפריט החדש (בלי ID). בהצלחה מוחזר קוד 200/201 ו-JSON object של הפריט כפי שנשמר בדאטהבייס (כולל ID שנוצר).
4. עדכון מלא: PUT לנתיב /api/books/<id>, עם גוף בקשה שמכיל את כל פרטי הפריט לעדכון. מוחזר קוד 200 ו-JSON object של הפריט המעודכן.
5. עדכון חלקי: PATCH לאותו נתיב, עם גוף בקשה שמכיל רק את השדות שרוצים לעדכן (למשל רק מחיר). מוחזר קוד 200 ו-JSON object של הפריט המעודכן.
6. מחיקה: DELETE לנתיב /api/books/<id>, בלי גוף בקשה. מוחזר קוד 200 או 204 (No Content), ובלי גוף בתשובה.
7. חוסר התאמה (לא נמצא): אם מבקשים פריט עם ID שלא קיים, מוחזר קוד 404 (Not Found).
שימו לב
- ה-method ו-ה-Route יחד קובעים לשרת אילו פונקציה להפעיל - אסור ששני נתיבים יחלקו בדיוק את אותה הצמדה של method+Route (מצב כזה נקרא Route Conflict, ועלול לגרום להתנהגות לא צפויה).
- לא כל הפעולות האלה חייבות להתקיים בכל שירות - זה תלוי בצורך של המערכת.
- אתר שנקרא http.cat מציג את קודי ה-HTTP השונים בעזרת תמונות חתולים, לצד הסבר, כולל קוד "משעשע" כמו 418 (I'm a teapot).
לאחר ההרצאה יודעים אילו method ו-Route מתאימים לכל פעולה נפוצה ב-REST API, ואיזה קוד תשובה ציפוי לכל מקרה.
השיעור הבא בקורס: שימוש REST API Single-Page Application
מילון מושגים:
REST – סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
ראוט – הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה; גם מסלול שדרכו עוברות חבילות ברשת.
GET – שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו; הפרמטרים מועברים בדרך כלל בכתובת.
JSON – פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
POST – שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
PUT – שיטת HTTP לשליחת נתונים לשרת כדי ליצור או להחליף משאב קיים במלואו.
עדכון אבטחה – עדכון תוכנה ממוקד שמתקן תקלה או סוגר חולשת אבטחה בגרסה קיימת.
DELETE – פקודת SQL למחיקת שורות מטבלה; גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

פרקי ההרצאה: מוסכמות ב-REST API

  1. 00:00

    מוסכמות ה-REST API

  2. 01:50

    GET קבלת כל הספרים

  3. 02:43

    GET ספר בודד לפי ID

  4. 03:40

    POST הוספת ספר חדש

  5. 05:45

    PUT עדכון ספר מלא

  6. 06:38

    PATCH עדכון חלקי

תמלול ההרצאה: מוסכמות ב-REST API

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

  1. 00:02

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

  2. 00:16

    יש לנו פה טבלת Excel שרציתי לרשום את המצבים השונים האלה. אז נתחיל עם מה ה-desired operation שאנחנו רוצים. מה אנחנו בעצם רוצים לבצע.

  3. 00:28

    אני רוצה to get, all books, בואו נעבור שלב שלב ונראה מה אנחנו צריכים לשלוח ומה אנחנו רוצים לקבל בשביל ה-desired operation הזה. אז דבר ראשון יש לנו request, מה יש לנו ב-request?

  4. 00:44

    ב-request יש לנו את ה-route שאנחנו גולשים, אפילו לפני ה-route יש לנו את המתוד, איזה מתוד נכון לבצע? יש לנו את ה, בוא נשים רגע את ה-desired operation פה, יש לנו את ה-route שאליו אנחנו גולשים, ומה אנחנו שולחים בבאדי.

  5. 01:03

    כלושת הדברים האלה שייכים ל-request. אז בואו נשים כאן request. עכשיו, בר-response, מה אנחנו מחזירים בחזרה? אז קודם כל, יש לנו את ה-status code, עבור הצלחה.

  6. 01:19

    נניח אנחנו רוצים success status code. בואו נרשום. אם הייתה לנו הצלחה, איזה status code אנחנו מחזירים בחזרה? מהסוכס?

  7. 01:30

    סטטוס טקסט. אם יש הצלחה, מה אנחנו מחזירים בסטטוס טקסט? ו מה אנחנו מחזירים בבאדי? בואו נגיד שזה יהיה response body, וזה יהיה request body.

  8. 01:44

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

  9. 02:00

    לאיזה ראוט אנחנו רוצים, ראוט כמובן זה רק הכתובת הפנימית, slash API, slash books, מה אני רוצה בבאדי? אין כלום בבאדי, אנחנו לא צריכים לרשום ברקווסט בדי, החלק התחתון של המסמך של הרקווסט, איזשהו דבר הוא כבר יודע, השרת ידע, אנחנו צריכים להחזיר מכל הספרים,

  10. 02:22

    מה השרת מחזיר במקרה של סטטוס קוד של הצלחה? 200, מה הטקסט? אוקיי, מה הוא מחזיר בבאדי? JSON of all books, כי ביקשנו את כל הספרים. מה קורה אם אנחנו רוצים to get one book by ID?

  11. 02:40

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

  12. 02:50

    קוד שיש מזהה ייחודי עבור כל אחד מהערכים. מה המתוד? ליאן אני גולש? פלש API. ppi, slash, books, אבל, בתוך הראוט, כחלק מהראוט, אנחנו רושמים את ה-id, לדוגמה, 7, נניח שאני רוצה לראות, את הפרטים של ספר מספר 7, שימו לב, זה רק דוגמה, מה אני שולח בבאדי?

  13. 03:15

    שום דבר, מה השרת נותן לי, כאשר הוא מצליח לשרת, את הבקשה שלי, 200, זה אוקיי, מה הוא מחזיר? json, off, one book, ה-json הראשון, והיה json array, of all books, ה-json הזה יהיה, json object, of one book, a זה book, עם id 7, מה קורה אם אנחנו רוצים to add new book, המתוד יהיה post, אנחנו

  14. 03:49

    גולשים ל-slash api, slash books, ראינו, זה יכול להיות אותו הראוט, כי, המתוד של הריקווסט הוא שונה והשרת באמת משתמש בתשלובת של שני החבר'ה האלה בשביל לדעת איזו פונקציה באה Backend להפעיל.

  15. 04:08

    זה אחד העקרונות החשובים ביותר של Rest API. התשלובת הזאת אסור לה לחזור על עצמה עוד פעם. זאת אומרת אני לא יכול שיהיה לי איפשהו עוד תשלובת כזאת.

  16. 04:20

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

  17. 04:33

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

  18. 04:44

    אבל כאן יש לי תשלובת שונה. פה get ו-Route א', פה get ו-Route ב', ופה post ו-Route א'. מותר. מה אנחנו שולחים? בבאדי.

  19. 04:54

    בבאדי אנחנו שולחים JSON object of the, ו-add, הנה הבאדי, מה השארת מחזיר לנו? 200 ו-1, כי הוא מוסיף אותו לדטאבייס, ה-success status text זה created, ויש לנו כאן, הוא מחזיר את ה-json object of the added book, לפי מה שקיים בדטאבייס, הוא כאילו שולף אותו מהדטאבייס, ואומר, זה מה אוספתי לך, קח אותו.

  20. 05:25

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

  21. 05:39

    אז מה שמקובל זה פשוט להגיד לו זה מה שיש לי עכשיו ב-database, קח אותו הדבר הבא שהוא מאוד נפוץ זה update full book זאת אומרת יש לנו כבר ספר אנחנו רוצים לעדכן את כולו זה יהיה put request אנחנו גולשים לזה זאת אומרת אנחנו גולשים ל-api books אבל שולחים לו את ה-id ה-id נשלח

  22. 06:03

    ב-route זה מה שמקובל במקרה הזה תודה ומה שאנחנו רוצים לשלוח ב-body, ברקווסט של ה-body זה json object of the whole book to update.

  23. 06:18

    זה מה שאנחנו שולחים. השרת מחזיר לנו 200, אין איזה סטטוס אחר מדויק בשביל update, חבל שאין, אבל אין. 200 זה יהיה אוקיי, והוא מחזיר לנו json object of the updated book לפי מה שקיים בדטאבס.

  24. 06:38

    as in db. הדבר הבא שיש לנו זה, update partial book. אני רוצה להתקן ספר, אבל אני לא רוצה לשלוח לך את כל הפרטים, אני רוצה לשלוח חלק, זה יהיה patch,

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

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

ההרצאה הבאה: שימוש REST API - Single-Page Application

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

  • הסבר על ארכיטקטורה REST
  • תרגול על Java API
  • הסבר על מה זה ממשק - API
  • API Level Project

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

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