כדי לממש delete משתמשים ב-HttpDelete. שאר ה-URL זהה. לפני שאנחנו מוחקים אנחנו רוצים לבדוק שהמוצר קיים. קובץ ProductsController.cs נוסיף את הפונקציה ל-interface. קובץ IProductsRepository.cs ונממש אותה. קובץ ProductsRepository.cs
אחרי שראינו מה הדרך הנכונה לבנות controller, ננקה את ה-controller ונראה מה יש לנו בו. קובץ ProductsController.cs יש את הפונקציה get שמביאה לנו את רשימת המוצרים. נממש את הפונקציונליות עבור פעולות אחרות. הבאת פריט בודד למוצר בודד הנתיב יהיה משהו כמו: api/products/23. ניצור את הפונקציה המתאימה. אנחנו יכולים להוסיף לפונקציה גם מה סוג הנתונים שאנחנו […]
ב-interface שבנינו IProductsRepository אנחנו מחזירים List של Products. ה-List הזה כנראה יחזור מ-Dנ או משהו כזה, בכל מקרה זה יהיה מקום שהוא לא השרת שלי. בגלל זה יש פה משהו לא תקין שאנחנו מחזירים את האובייקט עצמו ולא Task. הדרך הנכונה להחסיר את האובייקט היא על ידי Task: כאשר אנחנו פונים לשרת, והוא מבצע פנייה […]
נראה את מימוש Dependency Injection על הפרוייקט לדוגמא. בפונקציית ה-get ב-controller יש לנו coupling. קובץ ProductsController.cs יצירת ה-Interface כדי להשתמש ב-GetAllProducts צריך להכיר את ProductsRepository וזה כרגע מייצר את הבעיה. כדי לפתור את זה ניצור תיקייה שנקרא לה Contracts. בתוכה נוסיף item שהוא interface שנקרא לו IProductsRepository. בתוך IProductsRepository נשים את חתימת הפונקציה שאנחנו צריכים. […]
המשך של מבנה ה-Controller. ראינו שמבנה של controller בו אנחנו משתמשים ב-new על מנת ליצור class אחר, הוא משהו שעובד, אבל לא רצוי. אם כותבים new בקוד, כנראה שעושים משהו לא נכון! מותר לעשות new כאשר מדובר על new של ישויות מידע. לא לשירותים, כלומר classes שמחזיקים פונקציות. Product הוא ישות, אין בו פונקציונליות, יש […]
כשרצינו לפנות למודל קונפיגורציה פנינו דרך: וקראנו ערכים ב-middleware עם IOptions: מה קורה כשצריכים את הנתונים מהקונפיגורציה לא ב-middleware אלא במקום אחר, כמו בקונטרולר? לא נפנה דרך הפונקציה, אלא דרך ה-constructor. Constructor של Controller נייצר constructor ל-controller. קובץ ProductsController.cs מתי נוצר ה-controller? יש לנו בקובץ program את AddControllers ולמטה יותר יש את MapControllers. ה-MapControllers בונה […]
כתבנו class פשוט בצורה הזאת: Product.cs זאת לא הצורה המיטבית לכתוב את ה-class. יכול להיות שאני לא ארצה לחשוף ל-client את כל השדות של ה-class. את חלק מהשדות אני ארצה להציג ב-client אחרי מניפולציה, ולא כדאי להעמיס את ה-class עם כל השדות האלה. אנחנו נבצע מיפוי בין האובייקטים שישבו בתוך המערכת לבין אלה שהולכים ל-client, […]
המשך של Basic controller. לפעמים אנחנו רוצים לקבל ל-controller פרמטרים מורכבים ב-body. נכתוב פונקציה שתקבל Product מהמשתמש ומחזירה אותו. אל הפונקציה הזאת ניגש עם HttpPost. הפרמטרים שמגיעים עם בקשת post מגיעים ב-body של הבקשה ונכנסים בהתאמה לפרמטר שנתנו לפונקציה. לצורך הדוגמא נשתמש ב-class הבא: אם נריץ את הפרוייקט נראה את שתי הפונקציות שיש לנו בקובץ […]
בפרוייקט חדש, בקובץ program.cs יש לנו את השורה: כדי שנוכל לגשת ל-controllers, ניגש לתיקיית ה-controllers ונייצר בה controller חדש. נבחר API Controller Empty. נקרא לקובץ ProductsController.cs. Controller בא לתת מענה ל-Restful service, שזה אומר שמבצעים בקשות באמצעות get, post, delete, put. get – לקבל מידע, post – ליצור מידע, להכניס נתונים, put – עדכון מלא, […]
קבצי הקונפיגורציה מהו מודל הקונפיגורציה שיש לנו בעולם ב-asp.net? יש לנו את קובץ appsettings.json שהוא קובץ הקונפוגורציה של המערכת. כדי לגשת לקובץ הקונפיגורציה היינו כותבים ConfigurationManager.Appsettings וניגשים למשתנה שאנחנו צריכים. הבעיה היא שהפנייה הזאת היא לא אבסטרקטית, היא מובילה אותנו לקובץ קונפיגורציה מסויים. ניגש לקובץ קונפיגורציה ונוסיף לו ערך: קובץ appsettings.json כאשר רוצים להציג את […]