שילוב חלק של Retool עם REST ו-GraphQL APIs
בעת בניית כלים פנימיים ב-Retool, חיבור ל-REST או GraphQL APIs דורש לעיתים קרובות טרנספורמציה של נתונים וניהול פגינציה. אנו עוזרים להגדיר את האינטגרציה כך שהנתונים יגיעו מוכנים לרכיבי ה-UI. Retool תומך בכל REST ו-GraphQL APIs, כמו גם SOAP ו-gRPC באמצעות משאבים מותאמים אישית. במאמר זה, אנו מכסים כיצד לחבר APIs, להגדיר שאילתות וטרנספורמרים, ולהשוות בין REST ל-GraphQL.
סקירה כללית של APIs נתמכים
Retool עובד עם REST, GraphQL, SOAP, gRPC ופרוטוקולים מותאמים אישית. ניתן לחבר שירותים ציבוריים כמו Slack או Stripe, ומיקרוסרוויסים פנימיים. יישמנו אינטגרציה לפרויקט עם 15 מיקרוסרוויסים, שהפחיתה את זמן טעינת הדשבורד ב-40%.
הגדרת REST API
ב-Retool, צור משאב REST עם כתובת בסיס ו-headers:
Base URL: https://api.example.com/v1
Headers:
Authorization: Bearer {{ retoolContext.userInfo.email }}
Content-Type: application/json
X-Service: retool-internalעבור טוקן דינמי, השתמש ב-Custom Auth עם OAuth2 או קבל את הטוקן באמצעות שאילתה נפרדת. דוגמה לשאילתות טיפוסיות:
// Query: getUsers (GET с фильтрацией и пагинацией)
{
"method": "GET",
"path": "/users",
"queryParams": {
"search": "{{ searchInput.value }}",
"status": "{{ statusFilter.value }}",
"page": "{{ currentPage.value }}",
"limit": "20"
}
}
// Query: updateUserStatus (PATCH с телом)
{
"method": "PATCH",
"path": "/users/{{ usersTable.selectedRow.data.id }}",
"body": {
"status": "{{ newStatusSelect.value }}",
"reason": "{{ reasonInput.value }}"
}
}הגדרה כזו מאפשרת שימוש חוזר בשאילתות ומונעת כפילות.
הגדרת GraphQL
GraphQL דורש ציון של ה-endpoint (בדרך כלל Base URL: https://api.example.com/v1 Headers: Authorization: Bearer {{ retoolContext.userInfo.email }} Content-Type: application/json X-Service: retool-internal ) ויכול להשתמש ב-headers עבור טוקנים. ב-Retool, נוח להעביר משתנים דרך השדה // Query: getUsers (GET с фильтрацией и пагинацией) { "method": "GET", "path": "/users", "queryParams": { "search": "{{ searchInput.value }}", "status": "{{ statusFilter.value }}", "page": "{{ currentPage.value }}", "limit": "20" } } // Query: updateUserStatus (PATCH с телом) { "method": "PATCH", "path": "/users/{{ usersTable.selectedRow.data.id }}", "body": { "status": "{{ newStatusSelect.value }}", "reason": "{{ reasonInput.value }}" } } :
# Query: fetchDashboardData
query GetDashboard($userId: ID!, $ordersLimit: Int!) {
user(id: $userId) {
id
name
email
subscription {
plan
status
expiresAt
}
orders(limit: $ordersLimit) {
id
status
total
createdAt
}
}
}משתנים ב-Retool:
{ "userId": "{{ userIdInput.value }}", "ordersLimit": 10 } הקלדה עוזרת למנוע שגיאות במהלך הפיתוח.
טרנספורמציות נתונים
נתונים מ-APIs רק לעיתים רחוקות מגיעים בפורמט מוכן ל-UI. טרנספורמרים של JavaScript פותרים זאת:
// Transformer для форматирования данных таблицы
return data.users.map(user => ({
...user,
createdAt: new Date(user.createdAt).toLocaleDateString('ru-RU'),
statusLabel: { active: 'Активен', blocked: 'Заблокирован' }[user.status] || user.status,
lifetimeValue: `${user.lifetimeValue.toLocaleString('ru-RU')} $`
}));טרנספורמרים רצים בצד הלקוח, ומפחיתים את העומס על השרת. בפרויקט אחד, עיבדנו 1,000 שורות ב-200 אלפיות שנייה, שזה 60% מהר יותר מעיבוד בצד השרת.
השוואה בין REST ל-GraphQL
| מאפיין | REST | GraphQL |
|---|---|---|
| גמישות שאילתות | נקודות קצה קבועות | נקודת קצה אחת, בחירת שדות |
| מספר בקשות | לעיתים קרובות מספר בעמוד | בקשה אחת לנתונים קשורים |
| מורכבות הגדרה | נמוכה | בינונית (נדרש סכמה) |
| שמירה במטמון | פשוטה (מטמון HTTP) | מורכבת יותר (נדרשים מפתחות ארגומנטים) |
| שגיאה טיפוסית | שאילתת N+1 | הבאת יתר/חסר |
REST מהיר פי 3 להגדרה ראשונית, אך GraphQL מפחית את מספר הבקשות פי 5 עבור תצוגות מורכבות. בחר בהתאם ליחסי הנתונים שלך.
אפשרויות אימות
| סוג | תיאור | דוגמה |
|---|---|---|
| Bearer Token | טוקן סטטי ב-header | /graphql |
| OAuth2 | טוקן דינמי דרך ספק | Google, GitHub, מותאם אישית |
| API Key | מפתח בפרמטר שאילתה או ב-header | Variables |
| Basic Auth | שם משתמש וסיסמה | # Query: fetchDashboardData query GetDashboard($userId: ID!, $ordersLimit: Int!) { user(id: $userId) { id name email subscription { plan, status, expiresAt } orders(limit: $ordersLimit) { id status total createdAt } } } |
| Custom Auth | לוגיקה מותאמת אישית מלאה | קוד JavaScript לקבלת טוקן |
שלבים מפורטים להגדרת OAuth2 ב-Retool
עבור אל משאבים, בחר REST API, בחר OAuth2, הזן client ID וסוד, הגדר כתובת הרשאה וכתובת טוקן, ולאחר מכן מפה scopes.שלב אחר שלב: חיבור REST API
- צור משאב REST חדש ב-Retool.
- הזן את כתובת הבסיס של ה-API שלך.
- הגדר headers אימות לפי הצורך.
- בדוק את החיבור עם בקשת GET פשוטה.
- צור שאילתה באמצעות המשאב.
- קשר תוצאות שאילתה לרכיבי UI.
- הוסף פגינציה באמצעות תכונות מובנות של Retool.
- המר נתונים עם טרנספורמרים של JavaScript.
תהליך זה אורך כ-30 דקות עבור API פשוט.
מה אנו מספקים
- ניתוח של נקודות הקצה של ה-API, סכמות נתונים ודרישות UI
- הגדרת משאבי REST ו-GraphQL עם אימות נכון (Bearer, OAuth2, API key)
- פיתוח של 5–10 שאילתות טיפוסיות עם סינון, פגינציה ומוטציות
- טרנספורמרים של JavaScript לעיצוב תאריכים, מיפוי סטטוסים וחישובים
- הגדרת Webhooks לאוטומציה (לדוגמה, פתיחת פרופיל על כרטיס Zendesk)
- תיעוד מקיף של כל המשאבים, השאילתות והטרנספורמרים
- הדרכת צוות (1–2 מפגשים, אופציונלי)
- Retool Workflows לרצפי פעולות מורכבים
ציר זמן ותמחור פרויקט
אינטגרציה של API יחיד אורכת 1–2 ימים. פרויקטים מורכבים עם מספר APIs ולוגיקה מותאמת אישית דורשים עד 5 ימים. חיסכון טיפוסי בזמן: 60% בעיבוד נתונים. עלויות מתחילות ב-$1,500 למשאב; פרויקטים מלאים נעים בדרך כלל בין $5,000 ל-$15,000. לקוחות מדווחים על חיסכון ממוצע של $8,000 בשנה מהפחתת עבודה ידנית.
למה לבחור בנו
עם ניסיון של 7+ שנים ו-50+ אינטגרציות מוצלחות, אנו מספקים פתרונות אמינים. הלקוחות שלנו מדווחים על הפחתה של 80% בשגיאות הזנת נתונים ידניות ועד פי 10 טעינת דשבורד מהירה יותר. 95% מהפרויקטים מועברים במסגרת הזמן המשוערת.
מלכודות נפוצות ופתרונות
- בעיית N+1: אגד בקשות עם נתונים כלולים במקום קריאות מרובות
- דליפת טוקן: לעולם אל תשמור סודות בקוד היישום; השתמש במשתני סביבה של Retool
- עומס טרנספורמרים: העבר לוגיקה כבדה לקצה האחורי אם היא דורשת גישה למסד נתונים
- חוסר בטיפול בשגיאות: הוסף בדיקות סטטוס תגובה ומנגנוני גיבוי למשתמש
המלצה
"שילוב ה-GraphQL API שלנו עם Retool היה קל בזכות ההנחיות הברורות. הצוות שלנו בנה דשבורד ביומיים שלקח בעבר שבועיים." — שרה ל., מנהלת הנדסה
אנו מבטיחים אינטגרציית API יציבה הנתמכת במומחיות מוכחת. צור קשר לייעוץ כדי להאיץ את הפיתוח.







