תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

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

 

 

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

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

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

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?

 

תמונת המגיב

יקי בתאריך: 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

מדריך מעולה. תודה

תמונת המגיב

יוסי בתאריך: 29.08.2022

אחלה הסבר. תודה

תמונת המגיב

דניס בתאריך: 28.12.2022

OCD Entered the chat: איפה שההסבר על הRest יש טעות, רשום Transger במקום Transfer.

תמונת המגיב

חזי בתאריך: 06.01.2023

תודה לכם