מה זה GraphQL?
GraphQL הוא שפת שאילתה ל-API שפותחה על ידי Facebook ב-2015. בניגוד ל-REST API שבו כל endpoint מחזיר סט קבוע של נתונים, ב-GraphQL הלקוח מבקש בדיוק מה שהוא צריך – כמה שדות, כמה relations, ומקבל תשובה מותאמת. זה חוסך bandwidth ומאפשר גמישות פרונטאנד מיטבית.
GraphQL vs REST
| קטגוריה | GraphQL | REST |
|---|---|---|
| Endpoints | אחד (/graphql) | הרבה (/users, /posts, /…) |
| מבנה תשובה | הלקוח בוחר | קבוע מהשרת |
| Over-fetching | אין | נפוץ |
| Under-fetching | אין | נפוץ (N+1 queries) |
| Documentation | מובנה (schema) | נפרד (Swagger) |
| עקומת לימוד | תלולה | מתונה |
| Caching | מורכב | פשוט (HTTP) |
דוגמה – REST vs GraphQL
REST
GET /users/123 → { name, email, phone, address }nGET /users/123/posts → [{ title, body }]nGET /users/123/posts/456/comments → [{ author, text }]nn3 API calls, 3x network overhead
GraphQL
POST /graphqln{n user(id: 123) {n namen emailn posts {n titlen comments {n authorn textn }n }n }n}nnAPI call אחד, בדיוק מה שצריך
מתי להשתמש ב-GraphQL?
- Frontend מורכב – הרבה screens שצריכים סטים שונים של נתונים
- Mobile Apps – חשוב לחסוך bandwidth
- Multiple Consumers – Frontend Web + iOS + Android + Chatbot
- Microservices – GraphQL Federation לצירוף מקורות נתונים
- Rapid Iteration – צוות frontend רוצה חופש להוסיף שדות בלי לחכות ל-backend
מתי לא להשתמש ב-GraphQL?
- API פשוטה – CRUD בסיסי, REST מספיק
- Public API – REST + OpenAPI קל יותר לצרכני API
- Caching-heavy – HTTP caching של REST פשוט יותר
- File uploads – GraphQL לא מיטבי
- צוות קטן – REST פחות boilerplate
Technologies וכלים
- Apollo Server + Client – הכי פופולרי, מקיף
- GraphQL Yoga – קל משקל, מודרני
- Hasura – GraphQL אוטומטי מ-Postgres
- Prisma – ORM עם תמיכה טובה ב-GraphQL
- Relay – Facebook, מיטבי לפרויקטים גדולים
- URQL – Client קל וגמיש
אתגרים של GraphQL
- N+1 Queries – אם לא מטפלים – performance רע. פתרון: DataLoader
- Complexity – שאילתות עמוקות יכולות להיות יקרות. פתרון: query complexity limits
- Caching – HTTP caching לא עובד. פתרון: Apollo Cache, normalized cache
- Security – שאילתות זדוניות. פתרון: Depth limits, query allowlist
- Learning Curve – Schema Design, Resolvers, Subscriptions
שאלות נפוצות
האם GraphQL עדיף על REST ב-2026?
לא באופן גורף. לפרויקטים עם UI מורכב וצוותים בוגרים – GraphQL מנצח. ל-API פשוט או צוות קטן – REST עדיין הבחירה הנכונה. Trend: GraphQL יורד קצת בפופולריות, tRPC ו-REST חוזרים לאהדה.
מה זה tRPC ולמה הוא מתחרה ב-GraphQL?
tRPC (2022) הוא Type-safe RPC מבוסס TypeScript. מספק את היתרונות של GraphQL (typing, single endpoint) בלי המורכבות. פופולרי בפרויקטים מודרניים של Next.js. מומלץ לחפוף עם צוות אחיד ב-TypeScript.
איך לומדים GraphQL מהר?
מומלץ: תיעוד רשמי של graphql.org, Apollo tutorials, וקורס “How to GraphQL” (חינם). זמן ל-productive: 1-2 שבועות של תרגול.