
BooksService מוחקים את פונקציית הבדיקה ובונים GetAllBooks שמחזירה List<Book>, באמצעות _db.Books.ToList().GetAllBooks עם הנתיב api/books שקוראת ל-Service. הבדפדפן מציג מערך ריק כי אין בטבלה ספרים.IActionResult, שיכול להחזיק גם דאטה וגם סטטוס קוד. הקריאה Ok(books) מחזירה את הרשימה עם 200.launch browser ל-false, כך ש-Ctrl+F5 מריץ רק את הקונסול.Dispose לשחרור משאבים. לא יוצרים אותו בעצמנו כך שאין using, ולכן BooksService מממש IDisposable וקורא ל-_db.Dispose().ControllerBase אינו מממש IDisposable, ולכן ה-Controller מממש אותו בעצמו וקורא ל-Dispose של ה-Service. כש-NET. משחררת את ה-Controller, השרשרת משחררת את ה-Context._db.Books.ToList()Ok(books)launch browser = falseהטקסט המלא של הדקות הראשונות בהרצאה «קבלת נתונים מ-Database דוט נט NET Core.» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שהגדרנו את ה-dependency injection כמו שצריך, אנחנו יכולים לפנות לדטאבייס. אנחנו לא צריכים כבר את הפונקציה הזאת get some data, זה היה רק לצורך בדיקה. בואו נבנה פונקציה שפשוט מחזירה את כל הספרים.
אנחנו נמצאים ב-books service, פה אנחנו רוצים לבצע את הלוגיקה, והפונקציה שלנו צריכה להחזיר list מסוג book, get all books, תביא לי בבקשה את כל הספרים.
ואנחנו רוצים to return, ניגש ל-db שכבר יש לנו אובייקט ממנו, נקודה, אוסף הספרים, ונהפוך אותו ל-list, והנה סיימנו את הפונקציה בסרוויס של סייטלוגיקה.
הדבר הבא שאנחנו רוצים, בואו נשים את זה רגע side by side, זה ללכת לקונטרולר ולהגדיר פונקציה מתאימה. בקונטרולר בואו נבנה פונקציה, בעלת אותו השם, ניקח getAllBooks, זאת הפונקציה, במקום ה-test שיש לנו פה, הראוט שנרצה זה API Books, כפי שלמדנו בעולם ה-Rest API, זה יביא לי את כל הספרים.
כל מה שאנחנו רוצים לעשות זה לגשת ולהחזיר. כרגע נחזיר List Book בצורה כזאת. יש לנו כאן את כל ה-Books, והפונקציה שאנחנו רוצים לקרוא לה היא Get All Books. בואו נחזיר את כל הספרים, נבצע גלישה.
זה אמור להיות רק list, book, מעולה, נריץ, Ctrl F5, אנחנו רואים שהוא עדיין גולש לטסטינג, אני רגע אסגור, בואו נחזור לפה, ונגיד לו, תקשיב, זה טסטינג היה לבדיקה, אחלה, בואו תגלוש ל-API books, במקום טסטינג, נריץ שוב, ואנחנו רואים כרגע מערך רק, כי בדטאבייס אין ספרים.
טוב, בסדר, לא קרה כלום, בואו ניגש לדטאבייס, Edit, אנחנו רוצים להוסיף את C Sharp, C Sharp for Beginners, Price 100, הלאה, בואו נוסיף את Entity Framework, Description, Entity Framework Core for Expert, בואו נגיד From Beginners to Expert, Price 120.
בואו נלך לספר השלישי. ניקח את.NET Core, ויש לנו פה את.NET Core for beginners, וזה עולה 150. הנה יש לנו פה שלושה ספרים, ומה שאנחנו רוצים לעשות זה שוב פעם לבדוק את זה, בואו נחזור בחזרה, נריץ, go go go, הנה יש לנו רשימה של ספרים, בדיוק כמו שאנחנו רוצים, מחזיר לנו JSON, אוטומטית המערכת הופכת את
ה-list ל-json, ונראה שהכל עובד. מה אנחנו בעצם מחזירים? אנחנו מחזירים list. אוקיי, מה בקשר ל-status code? status code אוטומטית הוא היה 200, בסדר, אבל אם אני ארצה בהמשך status code אחר, אם אני ארצה בהמשך להחזיר הודעת שגיאה, במקום כל הספרים, מה בעצם אני אמור לעשות?
הרי אם אני אומר לו תחזיר list של ספרים, ונניח, לא יודע, יש איזושהי בעיה, קריסה, מה בעצם אני אחזיר? אז מה שנכון להחזיר מקונטרולר זה לא את הדאטה עצמו בצורה ישירה, אלא אובייקט מסוג אינטרפייס שנקרא IActionResult.
האובייקט הזה יכול להחזיק גם דאטה וגם סטטוס קוד, והוא בעצם מיוחד בשביל להחזיר דאטה מ-Rest API. מה אנחנו בעצם רוצים להחזיר?
אנחנו רוצים להחזיר את רשימת הספרים. אבל לציין שהסטטוס קוד הוא 200, למרות שזה היה דיפולט, אנחנו רוצים לציין את זה בצורה מפורשת.
אז אנחנו קוראים לפונקציה שנקראת אוקיי, ונמצאת אצלנו בבייס, לכן יש לנו גישה עליה, והיא מחזירה אובייקט אקשן ריזולט, ואנחנו רוצים לתת לו את הספרים, בוקס.
ככה אנחנו יכולים להחזיר גם דאטה וגם סטטוס קוד, שכרגע אוקיי, למדנו שזה 200. אם אנחנו נריץ את זה, אנחנו בעצם רואים... שיש לנו שוב פעם את רשימת הספרים אבל אם נרצה להחזיר סטטוס קוד אחר נוכל על ידי פונקציה מתאימה האם אנחנו באמת רוצים לבדוק את הרסט API שלנו על ידי הדפדפן?
כמובן שהתשובה היא לא דפדפן מאוד מוגבל אנחנו נרצה לבצע גם גלישות פוסט ופוט ופאץ'ודיליט ודפדפן לא עושה את זה לכן אנחנו basically לא רוצים בכלל לבדוק את המערכת דרך דפדפן יותר מזה, כשאני מעריץ את המערכת, אין לי מה להריץ בכלל דפדפן.
אנחנו רוצים לבדוק את הרסט-אי-פיישנו על ידי מערכת קצת יותר מקצועית, כמו פוסטמן לדוגמה.