REST

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

REST (ראשי תבות: REpresentational State Transfer) הוא סגנון עיצובי לעבודה בסביבת Web או בסביבות דומות לו. REST מיושם בארכיטקטורת שרת-לקוח. הרעיון העיקרי הוא הגדרת משאב שמצבו "עובר" (כתוצאה מהאינטראקציה בין השרת והלקוח). המושג הוצג לראשונה על ידי רוי פילדינג בשנת 2000, במסגרת עבודת הדוקטורט שלו. פילדינג הוא אחד המחברים העיקריים של פרוטוקול HTTP, שתחתיו מתבצעים ברוב המקרים, מימושי REST.

התפיסה[עריכת קוד מקור | עריכה]

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

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

ארכיטקטורת REST פותחה במקביל ל-HTTP 1.1. למרות זאת REST היא ארכיטקטורה כללית הניתנת למימוש גם בסביבות אחרות ולא רק תחת HTTP.

העיקרון המרכזי ב-REST: משאבים[עריכת קוד מקור | עריכה]

משאב (Resource) הוא המושג העיקרי ב-REST. לכל משאב יש ייצוג (Representation). הייצוג יכול להיות מספרי או גרפי. היישום מבצע מניפולציות במשאב באמצעות שינויים בייצוג שלו. כך למשל ייצוג של מעגל עשוי להיות ייצוג גרפי של נקודה מרכזית ורדיוס, אבל יכול להיות גם שלושה ערכים מספריים בפורמט של CSV.

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

אילוצים[עריכת קוד מקור | עריכה]

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

  • שרת-לקוח, עובד רק בתפיסת שרת לקוח, כאשר האחד אינו מושפע ממה שמתרחש באחר, למעט המסרים העוברים ביניהם.
  • Stateless, ההקשר (context) של הלקוח בפניה לשרת, אינו נשמר בשרת. מגבלה זו נועדה לשפר את מדרגיות (Scalability) השרת.
  • שימוש בזיכרון מטמון, ניתן לשמור תשובות השרת בזיכרון המטמון של מחשב הלקוח. המשמעות היא שניתן לעשות שימוש בתוכן התשובה גם בפרקי זמן מאוחרים יותר.
  • רב-שכבתיות, הקשר בין הלקוח לשרת לא חייב להיות ישיר. עשוי להיות שרת מתווך. לאפשרות זו משמעות בהקשרים של חלוקת עומסים (Load Balancing) ובהקשר של אבטחת מידע.
  • כלל ממשק, ישנם כללים מחיבים לגבי הממשק בין הלקוח לשרת בנושאים כמו: זיהוי המשאב, מניפולציות על משאבים באמצעות היצוג שלהם, מסרים המתארים את עצמם בשלמות (המידע במסר צריך להספיק על מנת לעבד אותו, למשל: איזה Parser יש להפעיל על המסר), hypermedia כמנוע של מצב האפליקציה.
  • קוד על פי דרישה, השרת יכול להרחיב את הקוד בלקוח באמצעות שליחת קוד הכולל לוגיקה עסקית לביצוע בלקוח. הרחבה זו יכולה להיעשות באמצעות טכנולוגיות כגון: יישומונים ו-JavaScript. האילוץ האחרון הוא למעשה יכולת ולא מגבלה ואין חובה לעשות בו שימוש.

REST לעומת SOAP[עריכת קוד מקור | עריכה]

קיים ויכוח בקהילה המקצועית בתחום המחשוב ביחס לשימוש ב-SOAP או ב-REST במימוש Web Services. בשנות האלפיים המוקדמות, הייתה העדפה ברורה לשימוש ב-SOAP. בשנים האחרונות השתנתה מגמה זו. ההבדל המהותי בין SOAP ל-REST הוא ש-REST היא ארכיטקטורה ו-SOAP הוא פרוטוקול.
התפיסה של REST מבוססת על שימוש במונחים ובמאפינים קיימים בתוך פרוטוקול HTTP להגדרת אינטראקציה בין שרת ולקוח, כגון: headers לפניות (Requests) ולתגובות (Responses), ופורמטים של קבצים באינטרנט (Internet media types). לעומת זאת התפיסה ב-SOAP מבוססת על מאפיינים ומבנים ייעודיים ל-SOAP. הנגזרות של הבדל עקרוני זה הן צריכת משאבים נמוכה יותר בשימוש ב-REST מעל HTTP בהשוואה לצריכת המשאבים בשימוש ב-SOAP תחת HTTP וקלות בקידוד מהות הפניות והטיפול בתגובות תחת REST.

Restful Web Service הוא Web Service פשוט המיושם באמצעות שימוש ב-HTTP ובעקרונות של REST.

להגדרה של Restful Web Service יש שלושה מרכיבים:

  1. ה-URI הבסיסי של ה-Web Service, למשל: http://example.com/resources/
  2. סוג ה-MIME של הנתונים. במקרים רבים הוא: XML, YAML או JSON.
  3. אוסף הפעולות הנתמכות על ידי ה-Web Service במונחים של HTTP Methods , כגון: POST, Get, Put, Delete.

דוגמאות לשימוש ב-REST[עריכת קוד מקור | עריכה]

בשנים האחרונות נעשה שימוש נרחב ב-REST בהקשרים של יישומי ווב 2.0 ובמימוש Web Services ו-SOA. להלן מספר דוגמאות לשימוש בו:

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]