לדלג לתוכן

GraphQL

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

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 (באנגלית אמריקאית). נבדק ב-2018-11-07.
  4. ^ "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation". The Linux Foundation (באנגלית אמריקאית). 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 (באנגלית אמריקאית). 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}}: (עזרה)