בשלב הבא אנחנו רוצים לראות איך אפשר לבצע filter על הטבלה. נניח שאנחנו רוצים לתת למשתמש לבחור פוסטים לפי קטגוריה. בתור התחלה נבחר את הקטגוריה עם id=1. שימוש ב-filter קובץ declarative-posts.component.ts ובתצוגה נקרא ל-filteredPosts. נקבל את הפוסטים ששייכים ל-id 1. השלב הבא הוא לתת למשתמש לבחור את הקטגוריה שהוא רוצה ולעדכן את הרשימה בהתאם. כדי […]
CRUD Operations נשלים את שאר הפעולות שהיו ב-controller עם Minimal API. יש לנו הבאת מוצר אחד ואת רשימת המוצרים: פעולת Delete. פעולת עדכון. פעולת הוספה. Use Tags בדרך הכתיבה של Minimal API אנחנו מאבדים את החלוקה שהיתה לנו קודם על ידי ה-controllers. את זה משיגים ע"י WithTags. הבעיה היא שאם יש לי 20 פונקציות, אני […]
היכרות עם Minimal API Minimal API מדבר על איך כותבים Web API בצורה נכונה ויעילה יותר. Minimal API עתיד להחליף לגמרי את ה-controllers. למה להחליף את ה-controllers? Minimal API יפתור את הבעיות ויעזור לביצועים. כמובן שיהיו בעיות אחרות. יצירת Minimal API Minimal API צריך שני דברים כדי להתחיל לעבוד איתו, מורידים את ה-controllers, כלומר את […]
קובץ ProductRepsitory.cs בפונקציה שלמעלה עשינו שימוש ב-Product עם ?. נראה מה המשמעות של זה. סוגי אחסון נתונים בגרסאות ישנות של .Net היה לנו הבדל בין משתנים by value ולמשתנים by reference. משתנים by value הם כל הפרימיטיבים, כמו int, bool וכו'. הערך שמור בתוך המשתנה שיש לנו בזיכרון. אם יש לנו אובייקטים שאנחנו מייצרים, מדובר […]
נבנה דמו של פרוייקט אנגולרי כדי לראות איך מתמודדים עם האתגרים של הסרבר מול ה-client. אחר כך נייצר בקשה מהפרוייקט כדי להציג את רשימת המוצרים על המסך. ניצור באנגולר קומפוננטה שתטען בעמוד הראשי והיא תלך להביא את המוצרים. קובץ product-list.component.ts קובץ product.model.ts קובץ product-list.component.html נקרא לקומפוננטה מקובץ ה-app ונקבל שגיאה שקשורה ל-cors. Cors Middleware כשאנחנו […]
נשאר לממש את פונקציית post שהיא הכנסה של item חדש. כאשר אנחנו מבצעים פעולת post יצרנו resource חדש בשרת. כשזה קורה אנחנו רוצים לדעת איך מגיעים אליו ולכן מחזירים את ה-URL של המוצר שהוספנו. קובץ ProductsController.cs קובץ IProductsRepository.cs קובץ ProductsRepository.cs יש ל-controller סטטוס נוסף של 409 שמשמעותו קונפליקט, למשל מנסים להוסיף מוצר שה-id כבר קיים […]
המוסכמה בעדכון רשומות היא שמעבירים את ה-id של הרשומה שרוצים לעדכן ב-URL ואת הרשומה עצמה המעודכנת ב-Body. האובייקט ב-id נמחק ובמקומו נכנס האובייקט החדש. קובץ ProductsController.cs בדומה למה שהיה ב-delete 'ודם נראה שהאובייקט קיים. אם הוא קיים נפנה ל-repository ונעדכן את הרשומה. את הפונקציה נייצר ב-interface. היא תחזיר את המוצר המעודכן. קובץ IProductsRepository.cs ונממש אותה. […]
כדי לממש 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: כאשר אנחנו פונים לשרת, והוא מבצע פנייה […]