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

- לקוחות (לקוחות)
- הזמנות (הזמנות לקוחות)
- פריטים (מוצרים)
בקשות
בקשות לקוח נעשות כמעט תמיד באמצעות פרוטוקול HTTP. באופן כללי, בקשות HTTP מורכבות ממספר מרכיבים:- שיטת HTTP
- כּוֹתֶרֶת
- URI
- גוף הבקשה
URIs ומשאבים
הנתונים שהלקוחות מקבלים או משנים באמצעות בקשות נקראים משאבים. תקשורת שרת-לקוח עוסקת במניפולציה של משאבים. ב-REST, משאבים הם כל מה שאתה יכול לתת לו שם. במובן מסוים, הם כמו שיעורים בג'אווה. ב-Java, אנחנו יכולים ליצור מחלקה לכל דבר. אז ב-REST, משאב יכול להיות כל דבר: משתמש, מסמך, דוח, הזמנה. זה יכול להיות הפשטה של ישות כלשהי, או משהו ספציפי, למשל, תמונה, וידאו, אנימציה או קובץ PDF. בדוגמה שלנו, יש לנו 3 משאבים:- לקוחות (לקוחות)
- הזמנות (הזמנות לקוחות)
- פריטים (מוצרים)
- /customers - URI של כל הלקוחות הזמינים
- /customers/23 — URI של לקוח ספציפי, כלומר הלקוח עם ID=23
- /customers/4 — URI של לקוח ספציפי, כלומר הלקוח עם ID=4.
- /customers/4/orders — URI של כל ההזמנות שבוצעו על ידי לקוח מס' 4
- /customers/1/orders/12 — URI של הזמנה מס' 12 שנעשתה על ידי לקוח מס' 1.
- /customers/1/orders/12/items — URI של רשימת כל המוצרים בהזמנה מס' 12 שנעשתה על ידי לקוח מס' 1.
שיטת HTTP
שיטת ה-HTTP היא רצף של תווים כלשהם (למעט תווי בקרה ומפרידים), המציין את הפעולה העיקרית המתבצעת במשאב. ישנן מספר שיטות HTTP נפוצות. אנו נפרט את אלו המשמשים לרוב בשירותי RESTful:- GET - קבל מידע על משאב מסוים (דרך המזהה שלו) או על אוסף של משאבים
- POST — צור משאב חדש
- PUT - שנה משאב (דרך המזהה שלו)
- מחק - מחק משאב (דרך המזהה שלו)
כותרות
בקשות, כמו גם תגובות, מכילות כותרות HTTP. הם מעבירים מידע נוסף על הבקשה (או התגובה). כותרות הן צמדי מפתח-ערך. אתה יכול להציג את רשימת הכותרות הנפוצות ביותר בוויקיפדיה . באשר ל-REST, לקוחות שולחים לעתים קרובות כותרת "קבל" בבקשות לשרת. כותרת זו נחוצה כדי לומר לשרת באיזה פורמט הלקוח מצפה לקבל תגובה. פורמטים שונים ניתנים ברשימה של סוגי MIME. MIME (Multipurpose Internet Mail Extensions) הוא מפרט לקידוד מידע ועיצוב הודעות כך שניתן יהיה לשלוח אותן דרך האינטרנט. כל סוג MIME מורכב משני חלקים מופרדים באמצעות קו נטוי - סוג ותת-סוג. דוגמאות לסוגי MIME עבור סוגי קבצים שונים:- טקסט - טקסט/רגיל, טקסט/css, טקסט/html
- תמונה - תמונה/png, תמונה/jpeg, תמונה/gif
- אודיו - אודיו/wav, אודיו/mpeg
- וידאו - וידאו/mp4, וידאו/ogg
- יישום - application/json, application/pdf, application/xml, application/octet-stream
Accept:application/json
כותרת זו אומרת לשרת שהלקוח מצפה לקבל תגובה בפורמט JSON.
גוף הבקשה
זו ההודעה ששלח הלקוח לשרת. האם לבקשה יש גוף או לא תלוי בסוג בקשת ה-HTTP. לדוגמה, בקשות GET ו-DELETE בדרך כלל אינן מכילות גוף בקשה. אבל בקשות PUT ו- POST יכולות - זה תלוי רק במטרת הבקשה. אחרי הכל, כדי לקבל ו/או למחוק נתונים באמצעות מזהה (שמועבר ב-URL), אין צורך לשלוח נתונים נוספים לשרת. אבל כדי ליצור משאב חדש (דרך בקשת POST), אתה צריך לשלוח את המשאב. הדבר נכון גם לגבי שינוי משאב קיים. ב-REST, גוף הבקשה נשלח לרוב בפורמט XML או JSON. פורמט JSON הוא הנפוץ ביותר. נניח שאנו רוצים לשלוח בקשה לשרת על מנת ליצור משאב חדש. אם לא שכחת, שקלנו את הדוגמה של אפליקציה שמנהלת הזמנות של לקוחות. נניח שאנחנו רוצים ליצור לקוח חדש. במקרה שלנו, אנו שומרים את פרטי הלקוח הבאים: שם, מייל, מספר טלפון. אז גוף הבקשה יכול להיות ה-JSON הבא:
{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
חיבור בקשות ביחד
אז, בדקנו מה עשוי להיות בבקשת לקוח. כעת ניתן כמה דוגמאות לבקשות יחד עם תיאוריםבַּקָשָׁה | תיאור |
---|---|
|
קבל מידע על לקוח מס' 23 בפורמט JSON או XML |
|
צור לקוח חדש עם השדות הבאים: שם — אימייל של אמיגו — amigo@jr.com מספר טלפון — +1 (222) 333-4444 |
|
ערוך לקוח מס' 1 באופן הבא: שם - בן דוא"ל - bigben@jr.com מספר טלפון - +86 (868) 686-8686 |
|
מחיקת הזמנה מס' 6 שנעשתה ע"י לקוח מס' 12 מהמערכת |
תגובות
בואו נגיד כמה מילים על תגובות השרת. תגובה מורכבת בדרך כלל מהחלקים הבאים:- קוד תגובה
- כותרות
- גוף תגובה
קודי תגובה של HTTP
הבה נשקול קודי תגובה של HTTP ביתר פירוט. קוד סטטוס HTTP הוא חלק מהשורה הראשונה של תגובת שרת לבקשות המבוצעות באמצעות פרוטוקול HTTP. זהו מספר שלם המורכב משלוש ספרות עשרוניות. הספרה הראשונה מציינת את המעמד של קוד מצב התגובה. קוד התגובה מלווה בדרך כלל בביטוי הסבר באנגלית, מופרד ברווח. ביטוי זה הוא סיבה לקריאה אנושית לתגובה. דוגמאות:- 201 נוצר
- 401 לא מורשה
- 507 אחסון לא מספיק
- 1XX - מידע
- 2XX — קודים אלה מצביעים על כך שבקשת הלקוח התקבלה ועובדה בהצלחה
- 3XX - קודים אלה מודיעים ללקוח כי יש להגיש בקשה נוספת, בדרך כלל ל-URI אחר, על מנת להשלים את הפעולה בהצלחה
- 4XX - שגיאת לקוח. קודים כאלה עשויים לנבוע מבקשה שגויה. דוגמה נוספת היא הקוד הידוע "404 לא נמצא", שיכול להתרחש כאשר לקוח מבקש משאב לא קיים
- 5XX - שגיאת שרת. קודים אלו מוחזרים ללקוח אם השרת אחראי לכשל בפעולה
GO TO FULL VERSION