GraphQL

מתוך ויקיפדיה, האנציקלופדיה החופשית
GraphQL
GraphQL Logo.svg
מפתח מטא, GraphQL foundation, קהילה עריכת הנתון בוויקינתונים
מחזור חיים 2012–הווה (כ־10 שנים) עריכת הנתון בוויקינתונים
קוד מקור https://github.com/graphql/graphql-spec עריכת הנתון בוויקינתונים
graphql.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

GraphQL היא שפת שאילתות קוד פתוח ושפת מניפולציה של נתונים עבור ממשקי תכנות בזמן ריצה.[1] GraphQL פותחה באופן פנימי על ידי פייסבוק בשנת 2012 לפני שפורסמה בפומבי בשנת 2015.[2] ב-7 בנובמבר 2018 הועבר פרויקט GraphQL מפייסבוק ל"קרן GraphQL" שהוקמה, בהנחיית קרן לינוקס ללא כוונת רווח.[3][4] מאז 2012, גרף עליית אחוזי האימוץ של GraphQL בקהיליית המפתחים נעקב בקפידה על ידי לי ביירון, יוצר GraphQL.[5] מטרתו של ביירון היא להפוך את GraphQL ל"נוכחת בכל מקום" בפלטפורמות אינטרנט.

GraphQL מספקת גישה לפיתוח ממשקי API ברשת, והיא הושוותה מול REST וארכיטקטורות שירות אינטרנט אחרות. זה מאפשר ללקוחות להגדיר את מבנה הנתונים הנדרשים, ואותו מבנה הנתונים מוחזר מהשרת, ולכן מונע להחזיר כמויות גדולות מדי של נתונים, אך יש לכך השלכות על מידת היעילות של שמירת תוצאות שאילתות בזיכרון מטמון של שרתים ברשת. הגמישות והעושר של שפת השאילתות מוסיפים גם מורכבות שאולי לא משתלמת עבור ממשקי API פשוטים.[6][7][8] הוא מורכב ממערכת סוגים (types), שפת שאילתות וסמנטיקה לביצוע, אימות סטטי, והתבוננות פנימית בסוג.

GraphQL תומך בקריאה, כתיבה, עריכה, ו"הירשמות כמנוי (subscribing) לשינויים בנתונים (עדכונים בזמן אמת - לרוב מיושמים באמצעות WebHooks).[9] שרתי GraphQL זמינים במספר שפות, כולל Haskell, [10]JavaScript,[11] Perl,[12] Python,[13] Ruby, Java, C++, [14] C #, Scala, Go, Rust, Elixir,[15] Erlang, PHP, R ו-Clojure.

דוגמה[עריכת קוד מקור | עריכה]

בקשת POST :

{
  orders {
    id
    productsList {
      product {
        name
        price
      }
    quantity
    }
  totalAmount
  }
}

תשובה:

{
  "data": {
    "orders": [
      {
        "id": 1,
        "productsList": [
          {
            "product": {
              "name": "orange",
              "price": 1.5
            },
            "quantity": 100
          }
        ],
        "totalAmount": 150
      }
    ]
  }
}

ראו גם[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ "GraphQL: A query language for APIs".
  2. ^ "GraphQL: A data query language".
  3. ^ "Facebook's GraphQL gets its own open-source foundation". TechCrunch (בAmerican English). נבדק ב-2018-11-07.
  4. ^ "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation". The Linux Foundation (בAmerican English). 2018-11-06. נבדק ב-2018-11-07.
  5. ^ Anthony, Art. "Is GraphQL Moving Toward Ubiquity?". NordicAPIs.
  6. ^ "GraphQL vs REST: Overview". Phil Sturgeon (באנגלית בריטית). נבדק ב-2018-11-25.
  7. ^ "Why use GraphQL, good and bad reasons". Honest Engineering (בAmerican English). 2018-08-04. נבדק ב-2018-11-26.
  8. ^ "GraphQL Fundamentals". Howto GraphQL. נבדק ב-4 ביולי 2018. {{cite web}}: (עזרה)
  9. ^ "GraphQL". facebook.github.io. Facebook. אורכב מ-המקור ב-18 ביולי 2018. נבדק ב-4 ביולי 2018. {{cite web}}: (עזרה)
  10. ^ "Hasura – Instant Realtime GraphQL on Postgres". Hasura. נבדק ב-24 באוקטובר 2019. {{cite web}}: (עזרה)
  11. ^ "GraphQL js".
  12. ^ "GraphQL - Perl implementation of GraphQL".
  13. ^ "Graphene". graphene-python.org. נבדק ב-2017-06-18.
  14. ^ graphql/libgraphqlparser, GraphQL, 2020-05-27, נבדק ב-2020-05-30
  15. ^ "Absinthe: The GraphQL toolkit for Elixir". נבדק ב-19 ביולי 2018. {{cite web}}: (עזרה)