
&. לדוגמה: api/books/price-range?minPrice=50&maxPrice=200. היתרון הוא שכל פרמטר ברור לפי שמו, בניגוד לרצף ערכים בנתיב כמו /50/130/blue.GetBooksByPriceRange מקבלת שני decimal, המחיר המינימלי והמקסימלי, ומחזירה רשימת ספרים. השאילתה היא _db.Books.Where(...) עם התנאי שהמחיר גדול או שווה למינימום וקטן או שווה למקסימום, ובסוף ToList.GetBooksByPriceRange, עם HttpGet ונתיב שמסתיים ב-price-range. הפרמטרים הם decimal, כמו טיפוס המחיר.[FromQuery].minPrice ו-maxPrice בלשונית Params, או ישירות בכתובת. טווח 60 עד 130 מחזיר את שני הספרים שבטווח (120 ו-70), וטווח 60 עד 80 מחזיר ספר אחד.price-range לנתיב.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-QueryString דוט נט NET Core.» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו רוצים לבנות זה ראוט שמקבל קווירי סטרינג. קווירי סטרינג זה רשימת פרמטרים שלכל פרמטר יהיה שם ווולי. בוא נניח שאנחנו רוצים איזה שהוא ראוט שהוא לא אחד מהראוטים האלה שכבר ראינו, אלא ראוט שמחזיר רשימה של ספרים לפי טווח מחירים.
נותנים מחיר מינימלי, נותנים מחיר מקסימלי, תביא לי את כל הספרים שבטווח הזה. אז בואו נמציא רגע איזשהו ראוט כזה. נניח שהיוזר גולש לראוט, API books, slash price range, ואז הוא רוצה בתוך הראוט, לתת לי רשימת פרמטרים, אבל עם שמות, וזה נקרא query string.
מה שהוא יעשה הוא ישים סימן שאלה, ואז שם של פרמטר, בואו נחליט על mean price, שווה איזשהו ערך, בואו נניח 50. ואז הוא רוצה עוד פרמטר, ampersand, max.
פרייס שווה, בוא נגיד, 200. תן לי את כל הספרים, שזה הטווח מחירים שלהם, אנחנו כמובן חייבים שיהיה לנו ראוט כזה, או פונקציה כזאת, סרוויס כזה.
בסדר, אבל הנה, query string. query string זה בעצם הרשימה הזאת של name, שם של פרמטר, שווה איזה שהוא value, ampersand, שם שווה value.
היתרון בקווירי סטרינג זה שאנחנו יכולים לשלוח הרבה פרמטרים, מי שמתבונן על זה מבין מה. כל פרמטר, זה קצת יותר ברור, מאשר סתם לרשום פה, סלאש 50, סלאש 130, סלאש blue, סלאש איזשהו שם של סופר מוישק, שאני ממש לא כזה יודע מה כל אחד מהם, אז אם יש לנו את הרשימה הזאת של הפרמטרים אפשר להבין שזה מחיר
מינימלי וזה מחיר מקסימלי, וכמובן REST API תומך בקוויריסטרי טוב, בואו נבנה אז קודם כל אנחנו רוצים פונקציה כזאת כאן בסרוויס, public, מחזירה ליסט של book, כי יכול להיות כמה ספרים כמובן, get books by price range.
הנה נקבל decimal, minimum price, seek decimal, max price, בצורה כזאת. אנחנו רוצים לבצע את הלוגיקה עצמה, אז בואו ניקח list book, books, שווה underline tb.books.where b, עבור כל ספר, תביא לי אותו רק עם הפרייס, גדול שווה למין פרייס, וגם b.price, קטן שווה ל-max price, ויש לנו כרגע את השאילתה,
וכל מה שנעשה זה נאמיר אותה ל-list, בצורה כזאת, אז הנה, יש לנו כאן את כל הספרים שנמצאים בטווח הזה. כל הנושא הזה של Lambda Expression, דיברנו עליו כבר ברחבה, באדוונס C Sharp, דיברנו עליו בקורס של מסדי נתונים, משהו פה לא סגור, יש לכם רפרנס לקורסים האלה, ומה שאנחנו
רוצים לעשות זה Return Books בצורה כזאת. Alright, אז הנה Get Books by Price Range, Done. בואו ניגש לכאן. ולמעשה אנחנו רוצים פונקציה שדומה לפונקציית ה-get שכבר כתבנו.
בואו נעתיק אותה, copy, נלך ונדביק פה, paste, ואנחנו רוצים http-get כמובן, מפני שאנחנו מבקשים מידע, api-books, שימו לב שיש לנו פה warning, בגלל שכבר יש לנו בדיוק ראוט כזה, וזה מה שנקרא route conflict, slash, אמרנו שאנחנו רוצים price range, בואו נראה בדיוק מה שאמרנו פה, Price Range,
ומה שאנחנו רוצים זה לקבל