דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים

בנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 514 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א אהרן

    @yossiz
    אשמח לדוגמא אמיתית
    במה מאפיין את ישות הבן כבן?

    במקרה של אחים (שלפעמים מקושרים) שלחתי קריאות נפרדות, סתם בגלל הפשטות, ובגלל שלפעמים עושים מניפולציה שונה (בצד הלקוח) על חלק מהקריאות, וגם בגלל שבין כה הצגתי חיוויי ברור בצד הלקוח.
    בחשיבה מחדש, הייתי כנראה מגדיר ב-API אפשרות לקבל מערך וכך הוא גנרי.

    yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי
    #5

    @אהרן כתב בבנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים:

    z
    אשמח לדוגמא אמיתית
    במה מאפיין את ישות הבן כבן?

    נגיד שיש לך בית דפוס, אז יש לקוחות ולכל לקוח יכול להיות כמה הזמנות ולכל הזמנה כמה פריטים, הפריטים הם בנים של הזמנות והזמנות הם בנים של לקוח

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    4
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      כתב ב נערך לאחרונה על ידי
      #6

      @yossiz אני מנסה להבין לאן אתה חותר. ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API, על כל היתרונות והחסרונות שלה...
      שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL?

      dovidD yossizY 3 תגובות תגובה אחרונה
      3
      • OdedDvirO OdedDvir

        @yossiz אני מנסה להבין לאן אתה חותר. ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API, על כל היתרונות והחסרונות שלה...
        שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL?

        dovidD מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #7

        @OdedDvir כתב בבנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים:

        פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API

        זה סתירה באותו משפט.
        REST נעשה נכון רק בויקיפדיה (בתיאור הערך, לא בAPI שלהם) ובצדק... עמא נוהג לעשות מלא בלגנים.

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        תגובה 1 תגובה אחרונה
        8
        • OdedDvirO OdedDvir

          @yossiz אני מנסה להבין לאן אתה חותר. ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API, על כל היתרונות והחסרונות שלה...
          שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL?

          dovidD מנותק
          dovidD מנותק
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי
          #8

          @OdedDvir עוד יש להעיר, REST לא נועד לשרת צד לקוח סופי אלא שכבת אפליקציה שהיא מקבל הוראות מצד לקוח (כי הוא לא נועד למקרים של אימות והרשאות וכולי).
          אז אפשר להיתמם ולראות את שאלתו של יוסי כשאלה על הנדסת התקשורת הנכונה בין שכבת האפליקציה לצד לקוח הסופי.

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          OdedDvirO תגובה 1 תגובה אחרונה
          1
          • dovidD dovid

            @OdedDvir עוד יש להעיר, REST לא נועד לשרת צד לקוח סופי אלא שכבת אפליקציה שהיא מקבל הוראות מצד לקוח (כי הוא לא נועד למקרים של אימות והרשאות וכולי).
            אז אפשר להיתמם ולראות את שאלתו של יוסי כשאלה על הנדסת התקשורת הנכונה בין שכבת האפליקציה לצד לקוח הסופי.

            OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            כתב ב נערך לאחרונה על ידי
            #9

            @dovid אתה מתכוון שהשאלה היא כיצד לעצב את חווית המשתמש בעריכה של נתונים היררכיים? מהניסוח של @yossiz הייתי תחת הרושם שכוונתו לדון על העיצוב המומלץ לשכבת API בצד השרת, אבל כעת אני מבולבל עוד יותר... למה התכוון המשורר?

            dovidD תגובה 1 תגובה אחרונה
            0
            • OdedDvirO OdedDvir

              @dovid אתה מתכוון שהשאלה היא כיצד לעצב את חווית המשתמש בעריכה של נתונים היררכיים? מהניסוח של @yossiz הייתי תחת הרושם שכוונתו לדון על העיצוב המומלץ לשכבת API בצד השרת, אבל כעת אני מבולבל עוד יותר... למה התכוון המשורר?

              dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי
              #10

              @OdedDvir אתה צודק, גם וגם. כן, יוסי ודאי התכוון גם לחוויית לקוח והוא ציין זאת.
              השאלה היא איך לתכנן את התקשורת בין התצוגה/קוד שלה, ולשכבת האפליקציה בשרת, בהבנה שזה בהחלט ישליך ברמה מסויימת על הUX.

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              3
              • OdedDvirO OdedDvir

                @yossiz אני מנסה להבין לאן אתה חותר. ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API, על כל היתרונות והחסרונות שלה...
                שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL?

                yossizY מנותק
                yossizY מנותק
                yossiz
                כתב ב נערך לאחרונה על ידי
                #11

                @OdedDvir כתב בבנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים:

                ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API,

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

                שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL

                בהחלט הייתי מעדיף

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                OdedDvirO תגובה 1 תגובה אחרונה
                0
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי
                  #12

                  @OdedDvir כתב בבנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים:

                  שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL

                  אם אתה כבר מזכיר את זה, יש לי שאלה נוספת שחשבתי לפתוח עליה עוד נושא ש-GraphQL הוא פתרון גם לזה. השאלה הוא לגבי דפים ב-UI שכל אחד יש לו שגעון אחר, אחד רוצה JOIN של טבלה א' ואחד של טבלה ב' וג' וכו, איך מטפלים בזה? אולי באמת אפתח לזה נושא חדש

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  0
                  • yossizY yossiz

                    @OdedDvir כתב בבנייה נכונה של API לעריכת ישות עם כמה ישויות קשורים:

                    ברור לי שאין צורך לומר לך פוק חזי וכו' ואתה מכיר את הדרך המקובלת של RESTful API,

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

                    שמא אתה מחפש דרך יעילה ואלגנטית יותר לבצע עדכונים היררכיים ב-API, בסגנון של GraphQL

                    בהחלט הייתי מעדיף

                    OdedDvirO מנותק
                    OdedDvirO מנותק
                    OdedDvir
                    כתב ב נערך לאחרונה על ידי
                    #13

                    @yossiz אני גם לא למדתי את הנושא באופן מסודר, ומסתפק אם יש לי מה להוסיף לך בנושא, אבל כיון שביקשת:

                    בקצרה, RESTful API הוא סגנון עיצוב של ה-API בצורה [השואפת ל]כך שבקשות ה-HTTP שנשלחות אל ה-API יבצעו פעולה בהתאמה לסוג המתודה של הבקשה (HttpMethod), למשל:

                    POST ליצירה
                    GET עבור קריאה
                    PUT עבור עדכון
                    DELETE עבור מחיקה

                    וכן נקודות הקצה של ה-API יהיו במבנה מאורגן, בד"כ היררכי לפי סוג ישות\מזהה:

                    GET Users
                    GET Clients/123
                    DELETE Doctors/456
                    

                    ויחזירו קודים מובנים, כמו 200 עבור success ו-404 עבור not found.
                    כך שה-API אמור להיות אינטואיטיבי.

                    ב-CRUD פשוט הכל טוב ויפה, עד שמגיעים לפעולות קצת יותר מורכבות, בהם לא ברור כל כך איך להיות RESTful "טהור".
                    לדוגמא: עדכון חלקי של רשומה (מישהו אי פעם השתמש ב-PATCH ?), שיוך ישות-צאצא לישות-אב (האם הנתיב של פעולת שיוך מטופל לרופא, צריך להיות PUT Doctors/1/Patients/4 או אולי PUT Patients/4/Doctors/1 ?)

                    כיוון ש-REST הוא לא ממש סטנדרט, כמו ש@dovid הזכיר, הכאוס חוגג וכל אחד מעקם את הכללים כרצונו, מתכנת מתחיל יכול ליצור API endpoints מוזרות, כמו:

                    POST Doctors/delete?doctorid=123
                    GET Doctors/all
                    GET Doctors/2/delete
                    

                    ולשאלתך, דוד כבר ענה לך שלפי הספר הדרך היא ב.

                    chagoldC תגובה 1 תגובה אחרונה
                    5
                    • OdedDvirO OdedDvir

                      @yossiz אני גם לא למדתי את הנושא באופן מסודר, ומסתפק אם יש לי מה להוסיף לך בנושא, אבל כיון שביקשת:

                      בקצרה, RESTful API הוא סגנון עיצוב של ה-API בצורה [השואפת ל]כך שבקשות ה-HTTP שנשלחות אל ה-API יבצעו פעולה בהתאמה לסוג המתודה של הבקשה (HttpMethod), למשל:

                      POST ליצירה
                      GET עבור קריאה
                      PUT עבור עדכון
                      DELETE עבור מחיקה

                      וכן נקודות הקצה של ה-API יהיו במבנה מאורגן, בד"כ היררכי לפי סוג ישות\מזהה:

                      GET Users
                      GET Clients/123
                      DELETE Doctors/456
                      

                      ויחזירו קודים מובנים, כמו 200 עבור success ו-404 עבור not found.
                      כך שה-API אמור להיות אינטואיטיבי.

                      ב-CRUD פשוט הכל טוב ויפה, עד שמגיעים לפעולות קצת יותר מורכבות, בהם לא ברור כל כך איך להיות RESTful "טהור".
                      לדוגמא: עדכון חלקי של רשומה (מישהו אי פעם השתמש ב-PATCH ?), שיוך ישות-צאצא לישות-אב (האם הנתיב של פעולת שיוך מטופל לרופא, צריך להיות PUT Doctors/1/Patients/4 או אולי PUT Patients/4/Doctors/1 ?)

                      כיוון ש-REST הוא לא ממש סטנדרט, כמו ש@dovid הזכיר, הכאוס חוגג וכל אחד מעקם את הכללים כרצונו, מתכנת מתחיל יכול ליצור API endpoints מוזרות, כמו:

                      POST Doctors/delete?doctorid=123
                      GET Doctors/all
                      GET Doctors/2/delete
                      

                      ולשאלתך, דוד כבר ענה לך שלפי הספר הדרך היא ב.

                      chagoldC מנותק
                      chagoldC מנותק
                      chagold
                      כתב ב נערך לאחרונה על ידי
                      #14

                      https://dzone.com/articles/graphql-vs-rest

                      תגובה 1 תגובה אחרונה
                      2
                      • yossizY מנותק
                        yossizY מנותק
                        yossiz
                        כתב ב נערך לאחרונה על ידי yossiz
                        #15

                        @OdedDvir תודה על ההשקעה!
                        לענות על השאלה המקורית, אני מוודא שהבנתי אותך נכון: אתה טוען שב-API מבוסס REST כל בקשה אמור להתייחס לישות יחיד לבד?

                        אני גם מתרשם כך, אבל עקרונות REST לא נהירים לי מספיק
                        זה לא מענין הנושא לדון על REST, אבל נראה לי שיש מרחק בין מה שנהוג לקרוא REST לבין העקרונות האמיתיים של REST.

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

                        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                        תגובה 1 תגובה אחרונה
                        1
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום