
Patch במקום Put. ההרצאה מדגימה עדכון מחיר בלבד.UpdateBookPrice. מביאים את הספר מהמסד, ואם הוא null מחזירים null. מוחקים את עדכון ה-Title וה-Description ומעדכנים רק את Price, ואז שומרים ומחזירים את הספר מהמסד, כך שכל המידע חוזר.HttpPatch וקוראים לה UpdateBookPrice. ה-ID בא מה-route והספר מה-body. מגדירים book.Id = id, קוראים ל-Service ומחזירים Ok.הטקסט המלא של הדקות הראשונות בהרצאה «עדכון חלקי במסד נתונים דוט נט NET Core.» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
ראינו שבפרוטוקול Rest API יש אפשרות להדכן מידע חלקי, זה יהיה Patch במקום Put. בואו נראה דוגמה לזה. במקום פונקציה שמעדכנת את כל הפרטים של הספר, בואו נבנה פונקציה, אני אעשה פה Copy Paste, שמעדכנת רק את המחיר.
נניח שזה משהו שמשתנה בתדירות גבוהה, ואנחנו רוצים שיהיה לנו אפשרות שהיוזר יוכל להדכן רק מחיר, או שליתר דיוק המערכת שבט. של הפרונט-אנד, הרי היוזר בצופו של דבר משתמש עם איזושהי פרונט, איזושהי מערכת פרונט-אנד, אולי אתר, אולי אופליקציית מובייל, מי שבונה לו את המערכת יכול לרצות להדכן רק מחיר, ולשלוח לי ספר עם רק מחיר, או פשוט רק את המחיר
עצמו, הנה יש לנו פה בוק שקיבלנו, אנחנו רוצים כמובן להחזיר את הבוק, אנחנו מקבלים את הספר מהדטאבייס, בודקים האם הוא נל, כן או לא, אם כן נחזיר נל, ואנחנו בעצם לא רוצים להדכן את כל היתר, title ו-description נוריד, נעדכן רק את ה-price, ונחזיר את הספר מה-database.
אז כל המידע יחזור. בואו נשכפל את הפונקציה הזאת, copy, paste, במקום put נגדיר patch, נבצע פה update book price, ה-id נשלח ב-route, וכאן אנחנו מקבלים את ה-body.
שוב פעם נגדיר את ה-ID, נקרא ל-update book price, ניתן את הספר ונחזיר תשובה אוקיי. אז זה הפשטות של העניין, עכשיו פרונט אם הוא בונה תופס נניח של עדכון מחיר בלבד, הוא לא חייב לשלוח לנו את כל המידע האחר, כאן הוא חייב לשלוח את המידע וכאשר נלמד ולידציה, נראה שאנחנו לא נסכים לקבל ספר עם מידע חלקי.
אבל פה הוא לא חייב ובואו נראה איך אנחנו מתייחסים על זה בפוסטמן. הנה פוסטמן ומה שאנחנו רוצים זה לשכפל בעצם את update book, בואו נעשה duplicate ונגדיר update book price, ניגש לבאדי, הנה ה-ID נמצא פה וניפטר משני החברה האלה, האמת בואו אפילו נשאיר אותם ונשנה אותם לסתם איזה מידע, יש לנו
פה.NET, C Sharp for Beginners זה יהיה הטייטל של הספר ו.C Sharp for Beginners או From Beginners to Expert ו נגדיר שאנחנו רוצים 150 שקל.
שימו לב שכאשר אנחנו נשלח Patch, כמובן אני צריך לשנות את זה לפאץ'אז תהיה התעלמות משני החברה האלה כי פשוט הפונקציה בכלל לא מעדכנת אותם ואנחנו גם לא היינו אמורים לשלוח אותם. בואו נבצע send, ואנחנו מקבלים שגיאה, כי כמובן שכחתי להריץ את השרת, Ctrl F5, שרת רץ, מעולה, go, send, הנה אנחנו רואים שהוא חוזר, אבל אין עדכון של ה-title ושל
ה-description, רק של הפריס 150, Ctrl R בדטאבייס, title ו-description נשארו as is, פריס כן עוד כאן ל-150, בפועל אנחנו בעצם לא צריכים לשלוח את זה בכלל, והכל אמור לעבוד כמו שצריך.
בואו רגע נגדיר 159.99. יש לנו פה בעיה אם the title field is required. מה שבעצם קרה כאן זה