Настройка Retool для работы с REST/GraphQL API
Retool подключается к любому REST или GraphQL API как к ресурсу. Это позволяет строить внутренние инструменты поверх существующего API без прямого доступа к БД.
REST API Resource
В Retool → Resources → REST API:
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.
REST запросы в Retool
// Query: getUsers
{
"method": "GET",
"path": "/users",
"queryParams": {
"search": "{{ searchInput.value }}",
"status": "{{ statusFilter.value }}",
"page": "{{ currentPage.value }}",
"limit": "20"
}
}
// Query: updateUserStatus
{
"method": "PATCH",
"path": "/users/{{ usersTable.selectedRow.data.id }}",
"body": {
"status": "{{ newStatusSelect.value }}",
"reason": "{{ reasonInput.value }}"
}
}
GraphQL Resource
# 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
}
}
}
Variables в Retool:
{
"userId": "{{ userIdInput.value }}",
"ordersLimit": 10
}
Transformers
JavaScript для преобразования ответа API:
// 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')} ₽`
}));
Webhook-триггеры
Retool Workflows можно запускать через Webhook из внешних систем. Пример: при поступлении жалобы в Zendesk — автоматически открыть профиль пользователя в Retool-инструменте поддержки.
Сроки
Подключение REST/GraphQL ресурса и 5–10 запросов с трансформерами — 1–2 дня.







