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
}
]
}
}
ראו גם
הערות שוליים