PracticU

יצירת RESTful Service מאפס

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › יצירת RESTful Service מאפס
מילון מושגים:
REST - סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
npm - מנהל החבילות של Node.js, המשמש להתקנה ולניהול ספריות JavaScript בפרויקט.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
Localhost - שם המפנה למחשב המקומי עצמו (כתובת 127.0.0.1), המשמש לבדיקת שירותים הרצים על אותו מחשב.

יצירת RESTful Service מאפס
השיעור בונה שרת RESTful ראשון ב-Node.js בעזרת Express, עם מערך מוצרים בזיכרון.
הצעדים
1. התקנת Express: הפקודה npm i express מוסיפה את התלות לקובץ package.json.
2. מערך נתונים: מערך של מוצרים, שכל אחד מהם מכיל id, שם ומחיר, לצורך התרגיל.
3. יצירת השרת: הפונקציה express() מחזירה אובייקט שמאפשר להרים את השרת, והפונקציה listen מאזינה בפורט 3000.
4. נתיב לכל המוצרים: get על /api/products מחזיר את המערך עם res.json, שמגדיר את הכותרת כ-JSON וממיר את הנתונים לטקסט.
5. מוצר לפי מזהה: מגדירים פרמטר :id בנתיב, והערך נמצא ב-req.params. מכיוון שהערך מגיע כמחרוזת, ממירים אותו למספר לפני ההשוואה.
6. בדיקה ראשונית: מריצים את השרת דרך Node, ונכנסים לכתובת localhost:3000/api/products בדפדפן.
שימו לב
- גלישה לכתובת השורש מחזירה "Cannot GET /", כי אין נתיב שמאזין לה. זו התנהגות תקינה.
- מוצר שלא קיים מחזיר כרגע תשובה ריקה עם סטטוס 200. הטיפול בזה ייעשה בהמשך.
- הדפדפן שולח רק GET, ולכן אי אפשר לבדוק בו פעולות אחרות.
הגרסה הזו מספיקה כבסיס, ותרחיב אותה בהמשך.
השיעור הבא בקורס: בדיקת RESTful Service עם Postman

פרקי ההרצאה: יצירת RESTful Service מאפס

  1. 00:00

    בניית RESTful Service עם Express

  2. 01:18

    הגדרת מערך המוצרים לדוגמה

  3. 02:18

    יצירת השרת והפעלתו על פורט 3000

  4. 03:14

    האזנה לפי method ו-route

  5. 04:57

    החזרת המוצרים כ-JSON

תמלול ההרצאה: יצירת RESTful Service מאפס

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת RESTful Service מאפס» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

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

  2. 00:21

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

  3. 00:38

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

  4. 01:00

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

  5. 01:14

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

  6. 01:30

    בואו נניח שהידיד הוא אחד ויש לנו name ובואו נניח שזה Apple ויש לנו price ובואו נניח שהוא שלוש וחצי. נשכפל את זה לעוד מוצר מספר שתיים, בננה, ארבע, שבע, מוצר מספר שלוש, יש לנו פיצ' והוא עולה חמש נקודה שתיים.

  7. 02:00

    והנה יש לנו אוסף של מוצרים. בואו נשים אפילו את האוסף הזה פה למטה, הוא מתחבא לו פה. עכשיו אנחנו רוצים שיהיה לנו כאן את express, const express שווה require express, הנה יש לנו כאן את express.

  8. 02:18

    הדבר הבא שאנחנו רוצים זה לבנות את השרת, const server שווה express, זאת פונקציה כמו שראינו באחד המודולים הקודמים שאנחנו קוראים לה והיא פשוט מחזירה לנו הוא בייקט שמאפשר להרים את כל השרת לאוויר.

  9. 02:34

    איך אנחנו מרימים את כל השרת לאוויר? Server listen, אנחנו רוצים להאזין על פורט, בוא נניח 3000 וברגע שהוא מצליח לעלות לאוויר והכל בסדר הוא יפעיל את הפונקציה הזאת כמו שראינו בעבר ובה אנחנו פשוט עושים פה איזשהו console.log של listening on, יש לנו את htp-localhost port 3000 בצורה כזאת וזה אומר שהשרט באוויר.

  10. 03:05

    עכשיו כל מה שאנחנו צריכים לעשות זה להגדיר לסרבר על איזה method אנחנו מאזינים, post, get, put, patch, delete ובכל method על איזה route אנחנו מאזינים לדוגמה api-products וכדומה.

  11. 03:21

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

  12. 03:54

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

  13. 04:17

    הפונקציה מקבלת request response כמו שראינו בסרטונים של טיפול ב-http וטיפול באקספרס וברגע שגולשים ל-rout הזה כל מה שאנחנו רוצים לעשות זה להחזיר את הקולקשן הזה אז בואו נחזיר אותו. אז יש לנו פה את ה-Response נקודה אנחנו יודעים שסטטוס אומר מה הסטטוס אנחנו יודעים שאנחנו יכולים לתת לו הדרים נוספים אין לנו כרגע הדרים נוספים

  14. 04:45

    שאנחנו רוצים לשלוח האמת אנחנו יכולים להגיד לו שה-content type הוא הוא application.json ותכף תראו למה אני לא הולך לעשות את זה ואנחנו רוצים to send back את כל המערך הזה כ-json.

  15. 05:04

    איך אנחנו יכולים לשלוח json? אז יש לנו את הפונקציה json.stringify שלוקחת את כל המערך product ושולחת אותו כ-json לקליינט אבל אין צורך בהרבה דברים.

  16. 05:19

    למה? כי ב-default הסטטוס הוא 200 ובשביל לשלוח ג'ייסון אנחנו בכלל לא צריכים את שני אלה אנחנו לא צריכים לומר לו שאנחנו שולחים ג'ייסון ואז להמיר לג'ייסון יש לנו פה פונקציה שנקראת ג'ייסון וכל מה שאנחנו צריכים לתת לה זה פשוט את האוסף עצמו פרודקטס ואז הוא יעשה את כל מה

  17. 05:37

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

  18. 05:49

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

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: הסבר על REST URLs

ההרצאה הבאה: בדיקת RESTful Service עם Postman

הרצאות קשורות מקורסים אחרים

  • יצירת Service ב-Windows
  • יצירת Service Class
  • יצירת מחלקת Customers Service
  • יצירת Docker Image מאפס - ללא בסיס

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React