לדלג לתוכן

GraphQL

מתוך ויקיפדיה, האנציקלופדיה החופשית
GraphQL
Image
מפתח מטא, GraphQL Foundation, קהילה עריכת הנתון בוויקינתונים
מחזור חיים 2012–הווה (כ־14 שנים) עריכת הנתון בוויקינתונים
סוג רישיון רישיון BSD החדש עריכת הנתון בוויקינתונים
קוד מקור https://github.com/graphql/graphql-spec עריכת הנתון בוויקינתונים
spec.graphql.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית Image

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 (באנגלית אמריקאית).
  4. ^ "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation". The Linux Foundation (באנגלית אמריקאית). 2018-11-06.
  5. ^ Anthony, Art. "Is GraphQL Moving Toward Ubiquity?". NordicAPIs.
  6. ^ "GraphQL vs REST: Overview". Phil Sturgeon (באנגלית בריטית).
  7. ^ "Why use GraphQL, good and bad reasons". Honest Engineering (באנגלית אמריקאית). 2018-08-04.
  8. ^ "GraphQL Fundamentals". Howto GraphQL. {{cite web}}: (עזרה)
  9. ^ "GraphQL". facebook.github.io. Facebook. אורכב מ-המקור ב-18 ביולי 2018. {{cite web}}: (עזרה)
  10. ^ "Hasura – Instant Realtime GraphQL on Postgres". Hasura. {{cite web}}: (עזרה)
  11. ^ "GraphQL js".
  12. ^ "GraphQL - Perl implementation of GraphQL".
  13. ^ "Graphene". graphene-python.org.
  14. ^ graphql/libgraphqlparser, GraphQL, 2020-05-27
  15. ^ "Absinthe: The GraphQL toolkit for Elixir". {{cite web}}: (עזרה)