PUT/POST

שלוות נפש

משתמש פעיל
ערב טוב,
אני צריכה לעדכן נתון מסוים באובייקט שכבר קיים במערכת
לפי מה שאמרו לי לא להשתמש בPUT אלה ב POST (ז"א להכניס אותו שוב לדאטה בייס)
אשמח לחוות דעת - מה באמת נכון לעשות
תודה!!
 

Torino

משתמש צעיר
post משמש להוספה או יצירת אובייקט
put לעדכון אובייקט
אבל בפועל, השימוש העיקרי הוא במתודות GET ו-POST
 

ורד69

משתמש פעיל
יש גם patch - שזה עידכון חלקי לעומת put שזה עידכון מלא
Post מקובל להשתמש במקרה של יצירה ועדכון אבל put/patch יותר נכון
 

שלוות נפש

משתמש פעיל
תסבירי מה התכוונת.
למה זה קשור לפוסט או פוט?
כי הוא כבר קיים לי
אני רק משנה בו נתון מסוים
אז שאני עושה שוב POST אני יוצרת את אותו האובייקט רק עם שינוי קטן
זה בעצם אמור לדרוס את האובייקט הישן?
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
פוסט או פוט זה סתם שמות. לא מעבר לזה.
את יכולה לעשות כל לוגיקה עם כל אחד מהם.
יש מוסכמות מסוימות. לפיהן בפוסט משתשמים דווקא כאשר יוצרים משהו חדש. זה נחמד. אבל לא נהוג לייחס לזה חשיבות כגדולה מדי. לכן לא נורא בכלל להשתמש בפוסט גם בשביל עדכון.
 

שלוות נפש

משתמש פעיל
פוסט או פוט זה סתם שמות. לא מעבר לזה.
את יכולה לעשות כל לוגיקה עם כל אחד מהם.
יש מוסכמות מסוימות. לפיהן בפוסט משתשמים דווקא כאשר יוצרים משהו חדש. זה נחמד. אבל לא נהוג לייחס לזה חשיבות כגדולה מדי. לכן לא נורא בכלל להשתמש בפוסט גם בשביל עדכון.
אז למה זה זורק לי שגיאה שאני מנסה להכניס משהו שכבר קיים??
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
אז למה זה זורק לי שגיאה שאני מנסה להכניס משהו שכבר קיים??
מסיבה אחרת כל שהיא :)
באופן כללי, הייתי ממליץ להשקיע קצת יותר להבין מה הולך מאחורי הקלעים. זה גם מעניין וגם פותר המון כאבי ראש.
 

שלוות נפש

משתמש פעיל
מסיבה אחרת כל שהיא :)
באופן כללי, הייתי ממליץ להשקיע קצת יותר להבין מה הולך מאחורי הקלעים. זה גם מעניין וגם פותר המון כאבי ראש.
אבל שאני מכניסה משהו חדש זה לא זורק
ז"א שהבעיה נגרמת בגלל שהאובייקט כבר קיים
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
מאמין לך. אבל זה לא קשור ל-post או put
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
גם כאשר יש לי באג בקוד שאני מכיר, והקוד לפני, אני לא תמיד מוצא את הבאג בקלות.
כל שכן אם מדובר בקוד שאני לא מכיר, לא רואה אותו ובכלל לא יודע על מה את מדברת - אז בכלל קשה לדעת מה הבעיה אצלך.
 

Torino

משתמש צעיר
get post put וכו' זה רק שמות אינפורמטיביים בשביל הסדר הטוב
למעשה את הקוד ומה הוא יעשה את רושמת
תנסי להעלות לפה את הקוד...
 

רביעיה

משתמש מקצוען
אז למה זה זורק לי שגיאה שאני מנסה להכניס משהו שכבר קיים??
סתם השערה, אולי את מנסה להכניס ערך לשדה ממופתח ולכן הוא לא מוכן להכניס אותו לטבלה.
בקוד שלך שנוגע ב-db את אמורה לזהות האם זה update או Insert ולעבוד לפי זה.
הצלחות !
 

שלוות נפש

משתמש פעיל
get post put וכו' זה רק שמות אינפורמטיביים בשביל הסדר הטוב
למעשה את הקוד ומה הוא יעשה את רושמת
תנסי להעלות לפה את הקוד...
public static void updateTeacher(string studentId, string teacherId)
{
Student student = ProjectDbContext.Context.Students.FirstOrDefault(s => s.StudentId == studentId);
student.TeacherRefId = teacherId;

ProjectDbContext.Context.Students.Add(student);
ProjectDbContext.Context.SaveChanges();
}
 

תבור

משתמש פעיל
השורה הטחת לפני האחרונה מנסה להכניס את התלמיד שוב לDB
ואת רוצה לבצע עדכון...
פשוט תמחקי אותה ואמור לעבוד לך...
בהצלחה!
 

neom

משתמש מקצוען
PUT, POST,GET וכו', זה בעצם שימוש ב REST. מה שאומר מימוש שליחת נתונים מה client ל server. (בדר"כ אובייקטים של JSON) בכל שפה או ספריה יש מימושים שונים. שליחה ב post או ב put תביא אותך לפונקציות שונות ב server (פונקציות שונות ב - WebAPI במקרה והשימוש הוא ב c#) הפונקציות האלו קוראות ל DB (שכבת ה DAL נניח), ושם בדר"כ מתעדכנים הנתונים.
באופן אידיאלי, יש פונקציות נפרדות ל put ול post, כאשר post מכניס אובייקט חדש ן put מעדכן נתון. אך זו רק השליחה של ה json. מעשית, אין שום בעיה לשלוח ל post גם אובייקט שמעודכן.
בתוך הפונקציה של ה server , בכל מקרה צריך לבדוק שהאובייקט לא קיים ב DB. (גם היה מימוש נפרד ל 2 האפשרויות, עדיין תמיד מבצעים בדיקה, למקרה שמישהו שולח מה client נתון כפול.)
 

ari rm

משתמש פעיל
בקוד שלך שנוגע ב-db את אמורה לזהות האם זה update או Insert ולעבוד לפי זה.
הצלחות !
בתוך הפונקציה של ה server , בכל מקרה צריך לבדוק שהאובייקט לא קיים ב DB. (גם היה מימוש נפרד ל 2 האפשרויות, עדיין תמיד מבצעים בדיקה, למקרה שמישהו שולח מה client נתון כפול.)
במקום לזהות אם הוא קיים או לא - ואז אם הוא לא קיים להוסיף ואם הוא קיים אז לעדכן שזה גם יכול ליצור באגים כל שהם, וגם יותר נתון לנזקים.
בעצם היה עדיף לחלק אותם ל2 url כגון:
1. insert
2. update
ואז כ"א דורש פונקציה נפרדת ומותאמת אליו.
ולזה יכול לעזור החילוק בין post ל put וכו', שבמקום לחלק ל2 נתיבים החילוק ביניהם הוא הגורם לחלק אותם ל2 פונקציות (עכ"פ בnode.js).
ואז גם חלוקת ההרשאות הרבה יותר נוחה ע"י meddlewhere ולא להתחיל לחלק אותם בתוך הפונקציה (כמובן אני מדבר על אופן שרוצים גם לחלק הרשאות נפרדות ליצירה מעדכון וכו'.)
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק לא

א לַמְנַצֵּחַ מִזְמוֹר לְדָוִד:ב בְּךָ יְהוָה חָסִיתִי אַל אֵבוֹשָׁה לְעוֹלָם בְּצִדְקָתְךָ פַלְּטֵנִי:ג הַטֵּה אֵלַי אָזְנְךָ מְהֵרָה הַצִּילֵנִי הֱיֵה לִי לְצוּר מָעוֹז לְבֵית מְצוּדוֹת לְהוֹשִׁיעֵנִי:ד כִּי סַלְעִי וּמְצוּדָתִי אָתָּה וּלְמַעַן שִׁמְךָ תַּנְחֵנִי וּתְנַהֲלֵנִי:ה תּוֹצִיאֵנִי מֵרֶשֶׁת זוּ טָמְנוּ לִי כִּי אַתָּה מָעוּזִּי:ו בְּיָדְךָ אַפְקִיד רוּחִי פָּדִיתָה אוֹתִי יְהוָה אֵל אֱמֶת:ז שָׂנֵאתִי הַשֹּׁמְרִים הַבְלֵי שָׁוְא וַאֲנִי אֶל יְהוָה בָּטָחְתִּי:ח אָגִילָה וְאֶשְׂמְחָה בְּחַסְדֶּךָ אֲשֶׁר רָאִיתָ אֶת עָנְיִי יָדַעְתָּ בְּצָרוֹת נַפְשִׁי:ט וְלֹא הִסְגַּרְתַּנִי בְּיַד אוֹיֵב הֶעֱמַדְתָּ בַמֶּרְחָב רַגְלָי:י חָנֵּנִי יְהוָה כִּי צַר לִי עָשְׁשָׁה בְכַעַס עֵינִי נַפְשִׁי וּבִטְנִי:יא כִּי כָלוּ בְיָגוֹן חַיַּי וּשְׁנוֹתַי בַּאֲנָחָה כָּשַׁל בַּעֲוֹנִי כֹחִי וַעֲצָמַי עָשֵׁשׁוּ:יב מִכָּל צֹרְרַי הָיִיתִי חֶרְפָּה וְלִשֲׁכֵנַי מְאֹד וּפַחַד לִמְיֻדָּעָי רֹאַי בַּחוּץ נָדְדוּ מִמֶּנִּי:יג נִשְׁכַּחְתִּי כְּמֵת מִלֵּב הָיִיתִי כִּכְלִי אֹבֵד:יד כִּי שָׁמַעְתִּי דִּבַּת רַבִּים מָגוֹר מִסָּבִיב בְּהִוָּסְדָם יַחַד עָלַי לָקַחַת נַפְשִׁי זָמָמוּ:טו וַאֲנִי עָלֶיךָ בָטַחְתִּי יְהוָה אָמַרְתִּי אֱלֹהַי אָתָּה:טז בְּיָדְךָ עִתֹּתָי הַצִּילֵנִי מִיַּד אוֹיְבַי וּמֵרֹדְפָי:יז הָאִירָה פָנֶיךָ עַל עַבְדֶּךָ הוֹשִׁיעֵנִי בְחַסְדֶּךָ:יח יְהוָה אַל אֵבוֹשָׁה כִּי קְרָאתִיךָ יֵבֹשׁוּ רְשָׁעִים יִדְּמוּ לִשְׁאוֹל:יט תֵּאָלַמְנָה שִׂפְתֵי שָׁקֶר הַדֹּבְרוֹת עַל צַדִּיק עָתָק בְּגַאֲוָה וָבוּז:כ מָה רַב טוּבְךָ אֲשֶׁר צָפַנְתָּ לִּירֵאֶיךָ פָּעַלְתָּ לַחֹסִים בָּךְ נֶגֶד בְּנֵי אָדָם:כא תַּסְתִּירֵם בְּסֵתֶר פָּנֶיךָ מֵרֻכְסֵי אִישׁ תִּצְפְּנֵם בְּסֻכָּה מֵרִיב לְשֹׁנוֹת:כב בָּרוּךְ יְהוָה כִּי הִפְלִיא חַסְדּוֹ לִי בְּעִיר מָצוֹר:כג וַאֲנִי אָמַרְתִּי בְחָפְזִי נִגְרַזְתִּי מִנֶּגֶד עֵינֶיךָ אָכֵן שָׁמַעְתָּ קוֹל תַּחֲנוּנַי בְּשַׁוְּעִי אֵלֶיךָ:כד אֶהֱבוּ אֶת יְהוָה כָּל חֲסִידָיו אֱמוּנִים נֹצֵר יְהוָה וּמְשַׁלֵּם עַל יֶתֶר עֹשֵׂה גַאֲוָה:כה חִזְקוּ וְיַאֲמֵץ לְבַבְכֶם כָּל הַמְיַחֲלִים לַיהוָה:
נקרא  5  פעמים

אתגר AI

הבעות פנים • אתגר 57

לוח מודעות

למעלה