PracticU

הסבר על REST URLs

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › הסבר על REST URLs
מילון מושגים:
REST - סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
PUT - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או להחליף משאב קיים במלואו.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.

הסבר על REST URLs
לפני כתיבת הקוד צריך להכיר את המוסכמות של REST: אילו כתובות להאזין להן, מה לשלוח בכל פעולה ומה להחזיר. ללא מוסכמה, כל שרת היה בוחר פורמט משלו, והלקוחות היו צריכים ללמוד כל אחד מחדש.
המוסכמות לפי פעולה
1. קבלת כל הספרים: GET על /api/books, בלי גוף בבקשה. מחזירים 200 ומערך JSON של כל הספרים.
2. קבלת ספר אחד: GET על /api/books/{id}. מחזירים 200 ואובייקט JSON של הספר.
3. הוספה: POST על אותו נתיב, עם אובייקט של ספר בלי ID. מחזירים 201 Created ואת הספר כולל ה-ID שהדאטה בייס יצר.
4. עדכון מלא: PUT על /api/books/{id}, עם כל השדות. ה-ID נלקח מהנתיב ולא מהגוף. מחזירים 200 ואת הספר המעודכן.
5. עדכון חלקי: PATCH על אותו נתיב, עם השדות שרוצים לעדכן בלבד. מחזירים 200.
6. מחיקה: DELETE על הנתיב עם ה-ID. מחזירים 204 No Content בלי תוכן. מחיקה של ספר שלא קיים גם היא מחזירה 204, ולא שגיאה.
שגיאות
7. 404 Not Found: הנתיב או המשאב לא קיימים, למשל ספר עם ID שאינו קיים בעדכון.
8. 400 Bad Request: הלקוח לא שלח מידע שנדרש לפי הלוגיקה של השרת, למשל ספר בלי שם, או PUT בלי כל השדות.
9. 500: השרת קרס. זו שגיאה של השרת ולא של הלקוח.
שימו לב
- GET לא שולח גוף בבקשה, ולכן לא מוסיפים בו כלום.
- PUT מיועד לעדכון מלא בלבד. עדכון של שדה אחד מתבצע ב-PATCH.
עם המוסכמות האלה, כל לקוח מבין מיד איך לפנות לשרת, בלי תיעוד נוסף.

פרקי ההרצאה: הסבר על REST URLs

  1. 00:00

    מוסכמה אחידה לכתובות REST

  2. 01:59

    ששת הפעולות הנפוצות ב-REST

  3. 02:56

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

  4. 03:55

    Route של ריסורס: api/books ברבים

  5. 05:54

    סטטוס קוד ותשובה לכל הספרים

  6. 08:09

    בקשת GET לספר בודד לפי ID

  7. 09:26

    הוספת ספר: POST וגוף הבקשה

תמלול ההרצאה: הסבר על REST URLs

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

  1. 00:03

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

  2. 00:28

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

  3. 00:54

    חושף ספרים ובוא נניח שיש לי אתר שנקרא read.com ואם אתם רוצים לגלוש אליי אז תגלשו ל-all books ואני אביא לכם בעצם מידע טקסטואלי לא json בכלל אני אמציא לכם איזשהו מידע משלי עם כל הספרים ושרת אחר יכול להגיד אוקיי אני http-reading.com ואם אתם רוצים לגלוש אליי תגלשו ל-api/mybooks בצורה כזאת ואז אני

  4. 01:25

    אביא לכם xml עם כל הספרים אז אתם רואים שכל שרת שמחליט לבנות רסט פול סרוויס יכול להחליט על איזשהו פורמט אחר משלו שהוא חושב באותו רגע לנכון לבנות.

  5. 01:39

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

  6. 02:06

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

  7. 02:21

    get, post, put, patch ו- delete. למה יש פה שש פעולות מרכזיות? בכל פעולה מה נכון להגדיר מבחינת מוסכמה, מה חייבים להגדיר מבחינת מוסכמה ליתר דיוק בשביל שבאמת יהיה לנו רסט שהוא מקובל לשימוש גם על השרת וגם על הלקוחות.

  8. 02:39

    אז בואו נתחיל, עמודה ראשונה אנחנו רוצים לראות את ה-Desired Operation, מה בעצם הפעולה שאנחנו רוצים לבצע. כאן אנחנו רוצים לראות בעצם את ה-Request של אותה פעולה, יש מספר דברים שאנחנו צריכים לגבי ה-request ולאחר מכן מספר דברים שאנחנו רוצים לגבי ה-response.

  9. 03:03

    אז למעשה יש לנו כאן desired operation ובואו נעשה את זה כאן. ראשית אנחנו רוצים to get all books. בואו נניח שזאת הפעולה שאנחנו רוצים לבצע.

  10. 03:19

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

  11. 03:34

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

  12. 03:55

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

  13. 04:20

    אנחנו לא גולשים ל-all books, אנחנו לא גולשים ל-my books, אנחנו לא גולשים לכל ראוט שהוא מומצא על ידינו. מה שנכון ומקובל בכל העולם זה /api / ואז שם הקולקשן שאתם רוצים לחשוף ברבים לא ביחיד.

  14. 04:40

    זאת גם נקודה חשובה. אם אני רוצה לגלוש לקולקשן שמחזיר לי מטלות, אני אגלוש ל-api/tasks ברבים, אם אני רוצה לגלוש לטבלה של חתולים אני אגלוש ל-api/cats ברבים ובוקס זה כמובן בוקס ברבים, זה הראוט.

  15. 05:00

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

  16. 05:20

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

  17. 05:39

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

  18. 06:04

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

  19. 06:16

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

  20. 06:31

    אז אם אנחנו הצלחנו לשרת את הבקשה ואנחנו הולכים להחזיר תשובה ללקוח עבור ה-GetRequest שלו, זה יהיה 200. למה הוא יושב כאן על right to left? בואו נעשה את הכל left to right, בצורה כזאת. יופי, יש לנו success סטטוס קוד, זה 200. עכשיו, מה ה-success סטטוס טקסט?

  21. 06:54

    כאן אנחנו ראינו ש-200 זה אוקיי. זה מה שאנחנו צריכים להחזיר. מה אנחנו מחזירים ב-response body? עצמו של הרספונס אז אם אנחנו מנגישים מידע לגבי ספרים והבקשה הייתה כל הספרים אז אנחנו מן הסתם רוצים להחזיר את כל הספרים אבל מה בעצם אנחנו רוצים להחזיר אנחנו רוצים להחזיר קולקשן או מערך של כל הספרים ומה שמקובל היום לבצע בכל העולם זה ג'ייסון הריי אוף אול בוקס מערך

  22. 07:31

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

  23. 08:09

    טוב, אז יש לנו כרגע בעצם את בקשה של תביא לי את כל הספרים. אחלה. אני רוצה עכשיו to get one book. אני רוצה ספר אחד ויחיד.

  24. 08:26

    מה ה-verb שלי? get. כי אני רוצה לקבל מהסרבר משהו. מה ה-rout שלי? ה-rout שלנו זה api/book/איזה שהוא ID מסוים.

  25. 08:41

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

  26. 08:59

    מבחינת Body אין לנו אנחנו לא שולחים שום דבר ב-Request Body. Success יהיה 200 כי הצלחנו לתאר או להביא ליוזר מה שאנחנו רוצים.

  27. 09:11

    עבור 200 הסטטוס טקסט יהיה אוקיי ומה שאנחנו מחזירים ללקוח זה json object ולא array of one book איזשהו אובייקט של ה-desired book שאנחנו רוצים להחזיר עכשיו היוזר רוצה to add new book ה-verb שלנו יהיה פוסט במקרה הזה ה-rout שלנו יהיה ה-rout הזה בדיוק.

  28. 09:43

    ראוט שאנחנו גולשים בשביל לקבל את כל הספרים כאשר אנחנו רוצים להוסיף ספר מן הסתם אנחנו צריכים לשלוח מידע מה הספר שאנחנו רוצים להוסיף אז כאן יש לנו את ה-request body וה-request body מחזיק את ה-JSON object of the book to add without ID. ID זה משהו שהסרבר מייצר ברוב המקרים לא צריך לשלוח איי-די, אין שום צורך, אנחנו גם לא יודעים מה האיי-די שהדאטאבייס

  29. 10:19

    הולך לייצר לנו, זה מה שאנחנו שולחים ב-request body. כאשר השרת מוסיף את אותו ספר לדאטאבייס,

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

ההרצאה הקודמת: הסבר על ארכיטקטורה REST

ההרצאה הבאה: יצירת RESTful Service מאפס

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

  • מוסכמות ב-REST API

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

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