מה זה REST API?
הגרסה האנגלית של המאמר What is REST API? in plain English פורסמה באתר PHPenthusiast.com
API (Application Program Interface) הוא דרך מוסכמת לשלוח ולקבל מידע בין מחשבים. לדוגמה, אם אתה מעוניין להציג באתר שלך מפות גוגל אבל (לצערך) המפות לא נמצאות על השרת שלך אלא על השרתים של גוגל. אז הדרך לבקש מגוגל לשלוח לך את המפה המבוקשת היא באמצעות API שמספק נותן השירות (גוגל) שאומר לאילו כתובות אינטרנט צריך להפנות את הבקשות כדי לקבל את המידע. הבקשה היא ה-request ששולח האתר שלנו, והתגובה המוחזרת מהשרתים של נותן השירות היא ה-response.
REST (REpresentational State Transger) הוא API שמגדיר סט של פונקציות שמתכנתים יכולים להשתמש בהם כדי לשלוח בקשות ולקבל תגובות באמצעות המתודות של פרוטוקול HTTP דוגמת GET ו-POST.
REST API יכול לשמש כל אתר או אפליקציה ולא משנה באיזו שפה היא כתובה מכיוון שהבקשות מתבססות על הפרוטוקול האוניברסלי של HTTP והמידע מוחזר בדרך כלל בפורמט של JSON שכל השפות השימושיות בעולם יודעות לקרוא.
HTTP הוא הפרוטוקול שעליו מבוסס האינטרנט. הוא מאפשר למחשב מכל מקום בעולם לשלוח בקשה לשרת מרוחק, ולקבל חזרה תגובה שאותה ניתן להציג בדפדפנים.
HTTP מספק מתודות שבאמצעותם מבצעת התקשורת באינטרנט, ושעליו מתבסס REST.
לדוגמה, כדי ליצור מאמר חדש בבלוג המחשב שלנו צריך לשלוח בקשה לשרת המרוחק באמצעות מתודת POST שמספק HTTP. כדי להציג מאמר בודד או רשימה של מאמרים נשתמש במתודה GET. המתודות PUT יכולות לשמש לעריכת מאמר קיים, והמתודה DELETE למחיקה.
הטבלה הבאה מציגה את 4 המתודות השימושיות ביותר של פרוטוקול HTTP:
GET |
מבקש מידע משרת מרוחק |
POST |
שולח מידע למחשב מרוחק |
PUT |
מעדכן את המידע בשרת המרוחק |
DELETE |
מוחק מידע מהשרת המרוחק |
את הבקשות צריך לשלוח ל-URL בשרת המרוחק. לדוגמה:
כדי לצפות ברשימת המאמרים נשלח בקשה ב-GET ל-URL:
//<something.com>/api/articles
ואם נרצה לקבל מאמר שה-id שלו 1, נשלח בקשה גם כן ב-GET ל-URL:
//<something.com>/api/articles/1
כדי ליצור מאמר חדש נשלח את המידע עם המתודה POST לכתובת:
//<something.com>/api/articles
זו לא טעות. הכתובת היא אותה אחת שמשמשת להבאת רשימת המאמרים. אבל מכיוון שהמתודה היא POST התוצאה היא אחרת.
כדי לערוך את המאמר שה-id שלו 1 נעדיף להשתמש במתודה PUT של HTTP, ונשלח בקשה ל:
//<something.com>/api/articles/1
וכדי למחוק מאמר נשתמש במתודה DELETE, ונציין בבקשה לשרת את ה-id:
//<something.com>/api/articles/1
המידע שמוחזר מצד השרת מכיל שני חלקים:
payload – הוא גוף התגובה, לרוב בפורמט JSON. הוא מכיל את המידע שאנחנו יכולים להציג למשתמשים לדוגמה את רשימת המאמרים או מאמר בודד. גוף התגובה אינו חובה. לדוגמה, כשמוחקים מאמר אין טעם להחזיר את המידע שלו שכבר לא קיים על השרת.
החלק השני הוא head שכולל את המידע על הבקשה, דוגמת כתובת הURL- וה-IP, זמן התגובה ועוד.
הכי חשוב מבחינתנו כמפתחים הוא קוד התגובה (status code). לדוגמה, קוד 404 למצב שהמידע אינו קיים. קוד 200 למצב שהמידע קיים ומוחזר בגוף התגובה.
את הקודים של התגובה המוחזרת מהשרת ניתן לחלק לקבוצות:
קבוצת ה-200 (200, 201, 204) מבטאים את הצלחת העברת המידע.
קבוצת ה-300 (301, 302) מפנה את הבקשה לכתובת אחרת שמספקת את השירות המבוקש.
קבוצת ה-400 (401, 403, 404) כשהמידע לא נמצא או שהפונה אינו רשאי לקבלו.
קבוצת ה-500 מוחזרת כאשר השגיאה נמצאת בשרת המרוחק.
הטבלה הבאה מסכמת את קודי התגובה הנפוצים שחשוב להכיר:
200 |
העברת המידע הצליחה |
201 |
פריט המידע החדש נוצר על השרת, והתגובה מחזירה את כל הפרטים שלו כולל ה-id |
204 |
הבקשה מולאה, אבל לא מוחזר מידע בגוף התגובה. לדוגמה, כשמוחקים פריט מידע |
301 |
הוזז לצמיתות - הפניית הבקשה הזו והבאות בעתיד לכתובת חדשה על השרת המרוחק |
400 |
שגיאה בבקשה שהגיש צד הלקוח ולכן הבקשה לא תטופל |
402 |
נדרש תשלום |
403 |
הבקשה תקינה, אבל השרת לא יוציא אותה אל הפועל בגלל שללקוח אין רשות |
404 |
לא נמצא |
405 |
המתודה אסורה. לדוגמה, כשרוצים לאסור על מחיקה של מידע. |
500 |
שגיאה פנימית בשרת המרוחק |
לרשימת הקודים המלאה: Github
רוצים לקודד במו ידיכם אפליקציה שמבוססת על ארכיטקטורת REST? אם כן קראו את סידרת המדריכים שבה תלמדו לפתח אפליקציית Angular שמתבססת על העקרונות ה-REST API.
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.