דוגמה של REST API עם דרופל

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

REST הפך להיות ממש פופולרי בכל מה שקשור בתקשורת בין אפליקציות מבוססות PHP. מה זה REST, אתם שואלים? אני לא הולך להכנס להגדרה של REST. עשו את זה קודם, לפני, ובאופן הרבה יותר טוב. אם אתם רוצים לקרוא, אתם מוזמנים לקרוא את שני המאמרים שליאור בר און כתב בבלוג (המצויין) שלו על ארכיקטורת תוכנה – REST א' ו-REST ב'.

אני גם לא הולך להראות כאן מימוש מלא של REST אלא מימוש פשוט מאד של קריאה בלבד באמצעות דרופל. אני מאד אוהב להשתמש בדרופל כ-Back End רב עוצמה שיכול לתמוך בקריאה ובכתיבה של משאבים (resources) דרך REST בקלות, יעילות והכי חשוב: עם מעט קוד יחסית. הדוגמה שלי תראה איך עושים קריאה של נתונים באמצעות GET מדרופל.

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

איך עושים את זה? בעיקר באמצעות hook_menu. בו אני יוצר את 'הדפים' שהם הבסיס לקריאות השונות.


/**
* implementation of hook_menu
**/

function myModule_menu() {
    $items['member'] = array(
      'page callback' => 'myModule_member',
	  'access arguments' => array('access content'), 
    );	
    return $items;
}

בדוגמה הזו, אני יוצר עמוד בשם member (שיהיה ניתן להכנס אליו באמצעות mysite.com/member). כאשר אנחנו נכנסים אליו, מופעלת פונקציה בשם myModule_member. אני יכול כמובן להוסיף פרמטרים לקריאה וליצור כתובות יותר מורכבות כרצוני. במקרה הזה מדובר בשירות פשוט שמרמז על כך שהוא נותן מידע על חברים. נתינת המידע וההדפסה נעשית בפונקצית ה-callback.

בפונקציה הזו כל הקסם מתרחש. אנחנו יכולים לבקש פרמטרים ולבצע את הקריאה מהם. למשל:


function myModule_member() {
	$email = $_GET['email'];
	$group = $_GET['group'];
}

מה שחשוב הוא ההדפסה או ההחזרה. אם אני מחזיר מידע בפונקציה הזו (מבחינת return), המידע שיש בדף יעבור דרך מערכת ה-theming של דרופל. לפעמים זה טוב, בדרך כלל זה לא טוב. לפיכך אני בדרך כלל מדפיס את המידע (משתמש ב-print) וכך אני מקבל טקסט נקי שמודפס ומוחזר למי שקרא אותו. אם אני צריך להוסיף header (יותר רלוונטי ב-REST שעושה PUT) אז אני מכניס אותו באמצעות פקודת PHP פשוטה של header.

נתתי כאן דוגמה על קצה המזלג כיצד יוצרים מימוש מאד (מאד) פשוט של REST עם דרופל – מה שחשוב הוא להשתמש ב-hook_menu ולהדפיס את התוצאה במקום להחזיר אותה. תהנו!

פוסטים נוספים שכדאי לקרוא

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

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

גלילה לראש העמוד