REST
מוויקיפדיה, האנציקלופדיה החופשית
מוויקיפדיה, האנציקלופדיה החופשית
REST (ראשי תיבות: Representational State Transfer) הוא סגנון תוכנה ארכיטקטוני למימוש שירותי רשת (API). הרעיון העיקרי הוא הגדרת משאב מערכת שמצבו עובר שינוי כתוצאה מהאינטראקציה בין מספק השירות והצרכן. המושג הוצג לראשונה על ידי רוי פילדינג בשנת 2000 במסגרת עבודת הדוקטורט שלו. פילדינג הוא אחד המחברים העיקריים של פרוטוקול HTTP, שתחתיו מתבצעים מימושי REST ברוב המקרים.
התפיסה הארכיטקטונית ב-REST היא תפיסת שרת-לקוח. תפיסה זו מחייבת קיום לקוח ושרת. לקוחות יוזמים פניות המכילות בקשות לשרתים. השרת מעבד את הפנייה, ומחזיר תגובות מתאימות. הייחוד של REST הוא בכך שהתוכן המועבר מהלקוח לשרת הוא ייצוג של משאב. המונח משאב בהקשר זה הוא מונח כללי ורחב. כל מושג קוהרנטי יכול להיות משאב.
בכל מצב נתון הלקוח יכול להיות בתהליך של שינוי מצב או במצב מנוחה (באנגלית rest). במצב של מנוחה הלקוח יכול להיות באינטראקציה עם המשתמש, אבל אינו תופס משאבים בשרת. הלקוח שולח פניות כאשר הוא מוכן לעבור למצב חדש. כאשר קיימת פנייה אחת או יותר שטרם הסתיים הטיפול בהן, הלקוח נמצא במצב של מעבר ממצב למצב. כאשר הלקוח נמצא בתהליך של שינוי מצב, השרת מעבד את המסמך המתאר את מצב הלקוח. המסמך עשוי להכיל קישורים, שעשוי להיות בהם שימוש בפעם הבאה שהלקוח יבקש לשנות את מצבו.
ארכיטקטורת REST פותחה במקביל ל-HTTP 1.1. למרות זאת REST היא ארכיטקטורה כללית הניתנת למימוש גם בסביבות אחרות ולא רק תחת HTTP.
משאב (Resource) הוא המושג העיקרי ב-REST. לכל משאב יש ייצוג (Representation). הייצוג יכול להיות מספרי או גרפי. היישום מבצע מניפולציות במשאב באמצעות שינויים בייצוג שלו. כך למשל ייצוג של מעגל עשוי להיות ייצוג גרפי של נקודה מרכזית ורדיוס, אבל יכול להיות גם שלושה ערכים מספריים בפורמט של CSV.
לצורך ביצוע אינטראקציה עם המשאב היישום צריך לדעת רק את זיהוי המשאב ואת הפעולה שהוא מעוניין לבצע. הוא אינו צריך לדעת על מצבים קודמים, נתונים בזיכרון מטמון ושרתים מתווכים כגון שרת פרוקסי. הסיבה לכך היא שכל המידע נשמר בשרת. האפליקציה חייבת להכיר את הפורמט בו מועבר הייצוג של המשאב. פורמט זה הוא בדרך כלל מסמך ב-XML, ב-HTML או ב-JSON, אף על פי שהוא יכול להיות גם טקסט או תמונה.
עבודה ב-REST מחייבת התחשבות באילוצים ובמגבלות של ארכיטקטורה זו, כמפורט להלן:
קיים ויכוח בקהילה המקצועית בתחום המחשוב ביחס לשימוש ב-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 יש שלושה מרכיבים:
בשנים האחרונות נעשה שימוש נרחב ב-REST בהקשרים של יישומי ווב 2.0 ובמימוש Web Services ו-SOA. להלן מספר דוגמאות לשימוש בו:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.