Интеграция Retool с REST и GraphQL API: настройка под ключ
При разработке внутреннего инструмента на Retool часто сталкиваются с тем, что REST или GraphQL API возвращает данные в неудобном формате, а прямой доступ к базе данных запрещён. Например, даты приходят в ISO, статусы — числами, а пагинация требует ручной обработки. Мы помогаем настроить интеграцию так, чтобы данные приходили уже подготовленными для таблиц и форм. Поддерживаются любые REST и GraphQL API, а также SOAP и gRPC через кастомные ресурсы. В этой статье разберём, как правильно подключить API, настроить запросы и трансформации, а также сравним REST и GraphQL.
Какие API можно подключить к Retool?
Retool поддерживает любые REST и GraphQL API, а также SOAP, gRPC и другие протоколы через кастомные ресурсы. Можно подключать как публичные сервисы (Slack, Stripe), так и внутренние микросервисы. Главное — чтобы был доступен эндпоинт и поддерживалась аутентификация. Типовые сценарии: подключение CRM, биллинга, аналитики. Мы реализовали интеграцию для проекта с 15 микросервисами — время загрузки дашборда сократилось на 40%.
REST API: настройка ресурса и запросы
В Retool → Resources → REST API создаём ресурс с базовым URL и заголовками:
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. Примеры типовых запросов:
// 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 требует указания эндпоинта (обычно /graphql) и может использовать заголовки для токена. В Retool удобно передавать переменные через Variables:
# 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 } Важно: для сложных схем типизация помогает избежать ошибок на этапе разработки.
Почему важны трансформеры?
Данные из API редко приходят в формате, готовом для UI. Например, даты в ISO требуют локализации, статусы — перевода. 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')} $` })); Трансформеры выполняются на клиенте — это снижает нагрузку на сервер. В одном из проектов мы обрабатывали до 1000 строк за 200 мс.
Как сравниваются REST и GraphQL в Retool?
| Характеристика | REST | GraphQL |
|---|---|---|
| Гибкость запроса | Фиксированные эндпоинты | Один эндпоинт, выбор полей |
| Количество запросов | Часто несколько на страницу | Один запрос для связанных данных |
| Сложность настройки | Низкая | Средняя (нужна схема) |
| Кэширование | Простое (HTTP кэш) | Сложнее (нужны key-аргументы) |
| Типичная ошибка | N+1 запрос | Overfetching/underfetching |
Вывод: REST быстрее в настройке, GraphQL эффективнее при сложных связях. Retool поддерживает оба — выбирайте под задачу.
Какие типы аутентификации поддерживаются?
| Тип | Описание | Пример |
|---|---|---|
| Bearer Token | Статический токен в заголовке | Authorization: Bearer <token> |
| OAuth2 | Динамический токен через провайдера | Google, GitHub, кастомный |
| API Key | Ключ в query параметре или заголовке | X-API-Key: <key> |
| Basic Auth | Логин и пароль | Authorization: Basic <base64> |
| Custom Auth | Полностью кастомная логика | JavaScript-код для получения токена |
Что входит в нашу работу по настройке Retool?
Мы выполняем интеграцию под ключ, включающую:
- Анализ — изучаем ваши API endpoints, схемы данных и требования к интерфейсу.
- Настройка ресурсов — создаём REST и GraphQL ресурсы с корректной аутентификацией (Bearer, OAuth2, API key).
- Создание запросов — разрабатываем 5–10 типовых запросов с фильтрацией, пагинацией, мутациями.
- Трансформеры — пишем JavaScript-преобразования для форматирования дат, статусов, вычислений.
- Вебхуки — настраиваем Webhook-триггеры для автоматизации (например, открытие профиля при тикете в Zendesk).
- Документация — передаём описание всех ресурсов, запросов и трансформеров.
- Обучение — проводим 1–2 сессии для вашей команды (опционально).
- Retool Workflows — автоматизация последовательностей действий для сложных сценариев.
Сколько времени занимает настройка?
Подключение одного REST или GraphQL ресурса и создание 5–10 запросов с трансформерами — от 1 до 2 дней. Для сложных интеграций с несколькими API и кастомной логикой — до 5 дней. Сроки уточняем после анализа. Типичная экономия времени при использовании трансформеров — до 60% на обработке данных. Стоимость интеграции рассчитывается индивидуально и зависит от сложности проекта.
Типичные ошибки и их решение
- Игнорирование N+1 — при REST делайте один запрос с вложенными данными вместо нескольких.
- Утечка токенов — никогда не храните секреты в коде приложения, используйте переменные окружения Retool.
- Сложные трансформеры — выносите логику на backend, если она требует доступа к БД или внешним сервисам.
- Отсутствие обработки ошибок — добавляйте проверки статуса ответа и fallback для пользователя.
Мы гарантируем, что после настройки ваш Retool-инструмент будет стабильно работать с любыми API. Наш опыт — более 5 лет на рынке, десятки проектов по интеграции. Свяжитесь с нами для оценки вашего проекта — мы подберём оптимальное решение. Получите консультацию уже сегодня, чтобы ускорить разработку.







