מה זה REST API?

מחבר:
בתאריך:

הגרסה האנגלית של המאמר What is REST API? in plain English פורסמה באתר PHPenthusiast.com

API (Application Program Interface) הוא דרך מוסכמת לשלוח ולקבל מידע בין מחשבים. לדוגמה, אם אתה מעוניין להציג באתר שלך מפות גוגל אבל (לצערך) המפות לא נמצאות על השרת שלך אלא על השרתים של גוגל. אז הדרך לבקש מגוגל לשלוח לך את המפה המבוקשת היא באמצעות API שמספק נותן השירות (גוגל) שאומר לאילו כתובות אינטרנט צריך להפנות את הבקשות כדי לקבל את המידע. הבקשה היא ה-request ששולח האתר שלנו, והתגובה המוחזרת מהשרתים של נותן השירות היא ה-response.

REST API

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:

ואם נרצה לקבל מאמר שה-id שלו 1, נשלח בקשה גם כן ב-GET ל-URL:

כדי ליצור מאמר חדש נשלח את המידע עם המתודה POST לכתובת:

זו לא טעות. הכתובת היא אותה אחת שמשמשת להבאת רשימת המאמרים. אבל מכיוון שהמתודה היא POST התוצאה היא אחרת.

כדי לערוך את המאמר שה-id שלו 1 נעדיף להשתמש במתודה PUT של HTTP, ונשלח בקשה ל:

וכדי למחוק מאמר נשתמש במתודה DELETE, ונציין בבקשה לשרת את ה-id:

המידע שמוחזר מצד השרת מכיל שני חלקים:

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 כוכבים

 

הוסף תגובה חדשה

 

= 9 + 6

תמונת המגיב

יקי בתאריך: 30.07.2018

מדריך טוב. ההערה היחידה שלי היא שממה שראיתי הכתובות הם לא תמיד כמו שאתה כותב.

תמונת המגיב

יוסי בן הרוש בתאריך: 30.07.2018

נכון. הכתובות אינם חובה אלא המלצה. תמיד תלך לפי ה-API שדורשים ממך לכתוב או מספקים לך.

תמונת המגיב

תמי בתאריך: 19.11.2018

אתר כ"כ מוצלח כדאי שישקיע קצת יותר במנועי חיפוש

תמונת המגיב

יוסי בן הרוש בתאריך: 19.11.2018

תודה, תמי. הקידום של האתר מגיע מהחיבור עם המשתמשים. אם משתמש נהנה וחוזר לאתר אז שני הצדדים מתקדמים. יותר מזה, משתמש שממש נהנה יכול תמיד להמליץ על האתר לחבריו כדי שאנשים נוספים יוכלו ליהנות.