PracticU

ניהול בקשות Post

בלי כתוביותעם כתוביות
PracticU › קורס MVC › ניהול בקשות Post
מילון מושגים:
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
מטמון - אחסון זמני ומהיר של נתונים שנדרשים שוב, כדי להאיץ גישה ולהפחית עומס מהמקור המקורי.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

ניהול בקשות Post
השיעורים הקודמים עוסקים בהצגת מידע ללקוח. בשיעור הזה נטפל במצב שבו הלקוח שולח מידע בחזרה לשרת, לדוגמה בעת הוספת מוצר חדש.
הבעיה
הלקוח יכול לראות דף, למלא טופס וללחוץ על Submit. השרת צריך לקבל את המידע, לדעת לקרוא אותו, ולהחליט מה לעשות איתו, לדוגמה לשמור אותו בדאטאבייס. בשיעור הזה נבנה את המודל, הקונטרולר והדף שמאפשרים זאת.
השלבים העיקריים
1. המודל: מוסיפים למודל Product את המאפיינים ProductName ו-UnitPrice.
2. רשימת מוצרים: פעולת Index מביאה רשימת מוצרים ממקום שמור בזיכרון השרת (Cache). ה-View עובר על הרשימה בלולאת foreach ומציג כל מוצר.
3. דף ההוספה: פעולת Create מחזירה View עם טופס, ובו שני שדות טקסט ולחצן Submit.
4. שמות השדות: כל שדה קלט חייב לקבל את השם המדויק של המאפיין שאליו הוא נכנס. בסרטון שדה המחיר נקרא בטעות price, והמחיר הגיע כ-0 בלי שגיאה.
5. שיטת השליחה: הטופס צריך להשתמש ב-method POST. אחרת הדפדפן שולח את הנתונים ב-Query String, כי ברירת המחדל של טופס היא GET.
6. שתי פעולות בשם Create: אחרי השליחה אותו שם פעולה מופיע פעמיים: אחת מציגה את הטופס, והשנייה מקבלת את הנתונים. כדי להבדיל ביניהן מסמנים את הפעולה שמקבלת נתונים עם [HttpPost], ואת הפעולה שמציגה את הטופס עם [HttpGet].
7. חזרה לרשימה: אחרי השמירה הפעולה מפנה את הדפדפן לרשימה בעזרת RedirectToAction("Index"), כך שהמשתמש רואה את המוצר החדש.
שימו לב
ה-MVC ממלאת את האובייקט Product אוטומטית מהטופס, לפי השמות של השדות. Cache מתאים להדגמה בלבד, כי הנתונים נשמרים בזיכרון השרת ונעלמים עם הפעלה מחדש. בהמשך הנתונים יישמרו בדאטאבייס.
השיעור הבא בקורס: שימוש ב-Html Helpers
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
MVC - דפוס ארכיטקטורה שמפריד יישום לשלושה חלקים: מודל (נתונים), תצוגה (View) ובקר (Controller).

להורדת קוד מקור של כל הדוגמאות בקורס MVC – לחץ כאן


פרקי ההרצאה: ניהול בקשות Post

  1. 00:00

    שליחת מידע מהלקוח לשרת

  2. 00:38

    מה זה בקשת Post

  3. 01:33

    מודל Product ו-Controller

  4. 02:18

    גלישה לפונקציה בשיטת Get

  5. 02:59

    רשימת מוצרים שמורה ב-Cache

  6. 05:20

    View שמציג את רשימת המוצרים

  7. 07:10

    Controller ברירת מחדל והרצת הדף

תמלול ההרצאה: ניהול בקשות Post

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

  1. 00:01

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

  2. 00:17

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

  3. 00:30

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

  4. 00:43

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

  5. 01:01

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

  6. 01:13

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

  7. 01:31

    לעשות איתו כל מיני דברים. אז נתחיל עם מודל בואו נוסיף מחלקה למודל מתארת שוב מוצר למוצר יש לנו כרגע רק product name ונקרא לזה unit price זה בעצם מחיר ליחידה אחת אז זה בעצם המודל שלנו ואנחנו יכולים ללכת ולבנות קונטרולר בואו נוסיף קונטרולר נקרא לו product controller ושימו לב שיש כאן

  8. 02:19

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

  9. 02:49

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

  10. 02:59

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

  11. 03:06

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

  12. 03:19

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

  13. 04:01

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

  14. 05:18

    קיימת לנו הפונקציה get product שמחזירה לנו רשימה של מוצרים ואנחנו רוצים להביא את הרשימה הזאתי ולשלוח אותה בחזרה ב-action index כך שה-view של אינדקס יציג אותה, אז בואו נקרא לה מפה ונייצר view עבור האינדקס.

  15. 05:46

    יש לנו פה view עבור האינדקס, בואו נגדיר שיש לנו כאן using, כלומר הגדרה של מרחב השמות, שם ה-Namespace ולבסוף הגדרה שהמודל שאנחנו מתעסקים איתו זה List של Product, מודל עם אם קטנה.

  16. 06:16

    כעת אנחנו יכולים לראות את ה-List של המוצרים. נרוץ ב-For Each על כל Product בתוך המודל שקיבלנו מהקונטרולר ונציג כרגע את הפרטים של אותו מוצר.

  17. 06:39

    יש לנו פה Span, Product Name, יש לנו פה את המוצר עצמו, יש לנו פה Span של ה-Price ויש לנו את המחיר.

  18. 07:04

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

  19. 07:30

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

  20. 07:40

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

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

ההרצאה הקודמת: ניהול קבצים בפרויקט MVC

ההרצאה הבאה: שימוש ב-Html Helpers

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

  • ניהול OU
  • הדגמה של סוגי בקשות - חלק 1
  • Jmeter - POST request
  • Sending Post Requests

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

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס Git ו-GitHub עם Visual Studio