קטגוריה: ASP.NET

כדי לממש 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 כאשר רוצים להציג את […]

המשך למאמר המלא >>