Создание и проверка вызова API
Через вызовы API приложение общается с внешними сервисами: получает свежие данные и пользуется чужой функциональностью. Разберём, как создать такой вызов и проверить его прямо в конструкторе.
Создание вызова
Откройте API Calls в левом меню, нажмите + Add и выберите Create API Call. Задайте API Call Name, выберите Method Type (GET, POST, DELETE, PUT или PATCH) и укажите адрес сервиса.
Метод определяет, что именно делает запрос:
- GET — получить данные с сервера.
- POST — отправить данные, создать ресурс.
- DELETE — удалить ресурс.
- PUT — заменить ресурс целиком.
- PATCH — изменить часть ресурса.
Динамические адреса
Часть адреса может меняться: https://reqres.in/api/users/2, где 2 — идентификатор пользователя, или https://reqres.in/api/users?page=5, где 5 — номер страницы.
- Замените жёстко заданное значение осмысленным именем в квадратных скобках:
https://reqres.in/api/users/[user_id]. - Создайте переменную с тем же именем.
Дальнейшие шаги зависят от выбранного метода.
Запросы GET и DELETE
- Если запросу нужны заголовки — скажем, токен авторизации, — добавьте их.
- Если нужны параметры запроса — номер страницы, идентификатор, — добавьте их.
- Нажмите Add Call.
После любых изменений вызов нужно сохранить.
В примере выше запрос GET получает данные пользователей с REQ | RES — сервиса с тестовым REST API.
А вот тот же запрос с динамическим адресом:
Как его собрать:
- Замените жёстко заданное значение именем в скобках:
https://reqres.in/api/users/[user_id]. - Создайте переменную с тем же именем.
Запрос DELETE описывается так же — отличается только выбранный Method Type.
Запросы POST, PUT и PATCH
- Если запросу нужны заголовки, добавьте их.
- Опишите тело запроса.
- Нажмите Add Call.
После любых изменений вызов нужно сохранить.
В примере запрос POST использует две переменные — userName и userJob, — которые подставляются в тело запроса JSON.
Запросы PUT и PATCH описываются так же: важно указать правильный адрес и метод.
Группы вызовов
Вызовы с общим базовым адресом объединяют в группу. Заголовки — например, токен авторизации — задаются один раз на всю группу и подставляются в каждый вызов.
Для приватных API заголовки группы не подставляются: их нужно задавать вручную для каждого такого вызова.
Как создать группу:
- Нажмите + слева вверху и выберите Create API Group.
- Задайте API Group Name.
- Укажите API Base URL — общую часть адреса. Слэш в конце не нужен.
- Кнопкой + Add Header добавьте заголовки — подробнее о них.
- Нажмите Add Group — группа появится в списке слева.
- Откройте её и нажмите + Add API Call.
- Опишите вызов как обычно, указав в адресе только ту часть, что идёт после базового URL.
Импорт описаний API
Описания вызовов можно импортировать пачкой из Swagger/OpenAPI — вместо того чтобы заводить десятки запросов руками.
Заодно это избавляет от опечаток, которые при ручном вводе неизбежны.
Из файла подтягиваются и настройки, нужные для работы вызова: заголовки, параметры запроса, переменные и тело. Жёстко заданные значения в теле запроса при этом стоит заменить на переменные.
API, описанные по стандарту OAS 2.0, импортируются, но могут потерять тело запроса. Импорт рассчитан на OAS 3.0 — с ним результат предсказуемее.
Как импортировать:
- Нажмите значок Import OpenAPI — откроется окно Import API Definitions.
- Перетащите файл Swagger/OpenAPI в область загрузки или нажмите Browse files и выберите его. Подходят
.json,.yamlи.yml, по одному файлу за раз. - Если в проекте ещё нет ни вызовов API, ни групп, а файл импортируется без предупреждений, FlutterFlow сразу добавит вызовы и закроет окно. В остальных случаях откроется окно Review API import: просмотрите изменения и нажмите Import APIs (при обновлении группы — Apply updates).
- После импорта вызовы появятся в виде группы с именем из поля
info.titleфайла. Если заголовка в файле нет, допишите его перед импортом.
Перед импортом сохраните или отмените несохранённые правки вызовов API — пока они висят, импорт не запустится.
Пример массового импорта — файл взят отсюда.
Проверка изменений перед импортом
Если в проекте уже есть вызовы API, окно Review API import до сохранения показывает, что именно поменяет импорт. Повторный импорт файла больше не заменяет группу целиком и не стирает ваши переменные, разбор ответов и настройки.
Вверху окна задаются:
- Import into — Create a new API group либо Update с именем существующей группы. Группа подставляется сама, только если её имя совпадает с заголовком в файле.
- Import mode — появляется при обновлении группы:
- Preserve configuration — применить выбранные изменения и сохранить переменные, разбор ответов и настройки;
- Reset configuration — заменить группу содержимым файла и сбросить конфигурацию. Недоступно, если часть эндпоинтов из файла импортировать не удалось.
Change file — загрузить другой файл.
Слева перечислены Group & shared changes и все вызовы из файла. У каждого вызова пометка Added, Updated или Removed, сверху — счётчики. Changes only скрывает вызовы без изменений.
У выбранного элемента три вкладки:
- Configuration — изменения по полям: URL, переменные, заголовки и прочие настройки. Каждое изменение можно включить или пропустить. Если вы правили поле во FlutterFlow и файл тоже его меняет, такое изменение по умолчанию снято, чтобы не затереть вашу правку.
- Swagger source — Previous Swagger и Uploaded Swagger бок о бок, включая схемы, на которые ссылается вызов. Изменения схем ответа видны здесь для сверки, но разбор ответа по ним FlutterFlow не генерирует.
- After import — какой получится конфигурация с текущим выбором.
Если вызов уже используется в приложении, в деталях видно, сколько действий и запросов на него завязано.
Apply updates сохраняет выбранные изменения; если вы удаляете вызовы, FlutterFlow попросит подтвердить. В режиме Reset configuration кнопка называется Replace all, и подтвердить нужно потерю текущих значений переменных, разбора ответов и настроек.
Пропущенные изменения, которые не конфликтуют с вашими правками, при следующем импорте того же файла предложат снова.
Если в файле есть эндпоинты, которые не удаётся импортировать, окно показывает число предупреждений, а Show details — какие именно. Пока предупреждения есть, удалять вызовы и сбрасывать группу нельзя: частичный импорт никогда не удалит существующие вызовы.
Для групп, созданных до появления этого окна, сравнивать не с чем — предыдущего описания нет. Тогда ваши правки и удаления сохраняются, если вы сами их не отметите.
Тестирование
Вызов стоит проверить до того, как он попадёт в приложение, — прямо в конструкторе.
- Выберите вызов и откройте вкладку Response & Test.
- Слева, в разделе Variables, задайте значения переменных.
- Справа, в разделе Preview, видно адрес, заголовки, тело запроса и ответ. Вкладка Test Response показывает ответ целиком: JSON, сырой текст и заголовки.
- Нажмите Test API Call. Появится статус запроса, а при успехе (код
200) — и полученные данные. - К любому значению из ответа можно обратиться, задав JSON-путь.
Ниже — проверка создания пользователя запросом POST с переменными userName и userJob. Успешный запрос возвращает код 201.
Запросы PUT и PATCH проверяются так же.
Действие API Call
Описанные вызовы доступны везде, где нужны.
Откройте редактор действий на нужном виджете, выберите триггер, найдите в списке действий «API Calls» и укажите нужный вызов.

Вызов можно добавить и как запрос к бэкенду — тогда он выполнится сам при загрузке страницы или виджета.
Порядок действий:
- Выделите виджет — например, кнопку.
- В панели свойств выберите Actions и нажмите Open — откроется редактор действий.
- Нажмите + Add Action.
- Найдите действие API Call (раздел Backend/Database).
- Выберите Group or Call Name.
- Если вызову нужны переменные — токен, параметры, идентификатор, — задайте их кнопкой + Variable.
- Action Output Variable Name — имя переменной с ответом. По умолчанию оно случайное; лучше заменить его на осмысленное, например
loginResponse. - Добавьте условное действие, проверяющее успех вызова.
- В ветке TRUE опишите, что делать при успехе: например, перейти на главную после входа.
- В ветке FALSE — что делать при ошибке: например, показать сообщение.