התקנה נתקין את ה-package של FluentValidation, FluentValidation.DependencyInjection, FluentValidation.AspNetCore מתוך nuget. מודל הנתונים שלנו של האוביקט שמגיע מה-client הוא: קובץ ProductDto.cs אנחנו רוצים להוסיף חוקיות לאובייקט הזה. יצירת ה-validator ניצור תיקיית validation בתוכה ניצור class בשם ProductDtoValidator. אנחנו יורשים מ-AbstractValidator ושולחים את האובייקט שאנחנו עושים לו ולידציה. קובץ ProductDtoValidator.cs אנחנו נגדיר constructor ובתוכו נשתמש בפונקציות שקבלנו […]
אחרי שעשינו מימוש עם Minimal Api אנחנו רוצים לראות צורת מימוש נוספת. Entity Framework היא טכנולוגיה שעוזרת לנו לחבר את ה-DB לאובייקטים של net. בצורה אינטואיטיבית. היא עוזרת לחבר בין שכבת המידע לביזנס logic. אנחנו רוצים מנגנון שיודע לשמור רשימות של items, ו-Entity Framework הוא אחד המנגנונים שיודע לעשות את זה. הדרך שבה הוא שומר […]
כשיש לנו פער בין האובייקט שאנחנו מקבלים מה-DB והמידע שאנחנו צריכים במד הסרבר לבין המידע שבסופו של דבר עובר ל-client שהוא "רזה" יותר, יהיה לנו class אחד שיחזיק את האובייקט המלא ואחד שיחזיק את מה שעובר הלאה ל-client. החזרת אובייקט DTO בקוד שלנו יש את ה-class בשם Product: קובץ product.cs ואת ProductDto. קובץ productDto.cs אם […]
יצירת קובץ Minimal Api נפריד את הגדרות ה-Minimal Api לקובץ נפרד. נייצר תיקייה בשם EndPoints. בתוכו נייצר class שבו ישבו ProductsEndPoints. את ה-class נגדיר כ-static. קובץ ProductsEndPoints.cs בתוך ה-class נגדיר extention methods, שזה היכולת להגדיר פונקציה שהיא שייכת ל-class או interface בלי לכתוב אותה בתוכם. את כל הפעולות שעשינו עד עכשיו עשינו דרך ה-app, שזה […]
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 ונממש אותה. […]