מה זה 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 כוכבים
יקי בתאריך: 30.07.2018
מדריך טוב. ההערה היחידה שלי היא שממה שראיתי הכתובות הם לא תמיד כמו שאתה כותב.
יוסי בן הרוש בתאריך: 30.07.2018
נכון. הכתובות אינם חובה אלא המלצה. תמיד תלך לפי ה-API שדורשים ממך לכתוב או מספקים לך.
תמי בתאריך: 19.11.2018
אתר כ"כ מוצלח כדאי שישקיע קצת יותר במנועי חיפוש
יוסי בן הרוש בתאריך: 19.11.2018
תודה, תמי. הקידום של האתר מגיע מהחיבור עם המשתמשים. אם משתמש נהנה וחוזר לאתר אז שני הצדדים מתקדמים. יותר מזה, משתמש שממש נהנה יכול תמיד להמליץ על האתר לחבריו כדי שאנשים נוספים יוכלו ליהנות.
אלי בתאריך: 30.01.2019
אתר מעולה ! גם מי שהידע שלו לא משהו יכול להבין. תודה !
הארי בתאריך: 09.03.2019
מעולה. תודה!
שני בתאריך: 30.03.2019
תודה רבה יוסי עזרת
לי להבין את הדברים טוב יותר :)
כיף למצוא אתר כזה
סיון בתאריך: 03.07.2019
מאמר מעולה!
מסביר מצוין ומנגיש את הנושא לכל אחד
שאפו ענק
יוסי בתאריך: 11.07.2019
נשמח אם תוסיף דוגמאות Js
מצוין! בתאריך: 26.09.2019
תודה רבה!
ההסבר הכי טוב שקראתי ברשת
מנשה בתאריך: 10.12.2019
בס"ד
באמת הסבר טוב. תודה רבה.
רק מאיפה הפונקציה של REST לוקחת את הפרמטרים ש ב JSON?
תודה רבה :)
חן בתאריך: 08.03.2022
נחמד, תודה.
יוסף בתאריך: 08.04.2022
תודה. צורת כתיבה ברורה.
אנונימי בתאריך: 25.07.2022
מדריך מעולה. תודה