Вызовы API
На этой странице вы узнаете базовые сведения о различных концепциях добавления вызова API в ваш проект. Они являются строительными блоками для добавления вызова API. В зависимости от определения API вы можете использовать некоторые или все эти концепции, чтобы успешно реализовать вызов API в вашем проекте.
Вот они:
- Заголовки
- Параметры запроса
- Переменные
- Тело
- Ответ API (JSON) в/из типа данных
- Путь JSON
- Расширенные настройки
Заголовки
Заголовки обычно содержат метаданные, связанные с HTTP-запросом или ответом вызова API. HTTP-заголовки в основном делятся на две категории:
- Заголовки запроса содержат дополнительную информацию о ресурсе, который нужно получить, или о клиенте, запрашивающем этот ресурс.
- Заголовки ответа содержат дополнительную информацию об ответе, который возвращает сервер.
Передача заголовков запроса
Некоторые распространенные заголовки запроса, которые могут потребоваться при отправке запроса:
- Authorization: Используется для аутентификации запроса.
- Content-Type: Используется при отправке POST/PUT/PATCH-запроса, содержащего тело сообщения.
Чтобы передать загол овок запроса:
- Выберите вкладку Headers и нажмите кнопку + Add Header.
- В поле ввода введите имя заголовка, за которым следует двоеточие (:), и его значение (например, Content-Type: application/json).
По умолчанию для любого HTTP POST-запроса Content-Type равен application/json, поэтому если тело данных в формате JSON, вы можете пропустить определение Content-Type.
Передача токена аутентификации (как заголовок запроса)
Возможно, вам потребуется добавить защищенный API. Это означает, что он возвращает результаты только в том случае, если вы передадите токен авторизации (он же auth token) в параметре заголовка. Обычно это делается для предотвращения злоупотреблений. Давайте разберем, как добавить токен аутентификации.
Передача статического токена аутентификации
Некоторые сервисы предоставляют статический токен аутентификации. Такой токен не меняется, пока вы вручную не сгенерируете новый.
Чтобы передать статический токен аутентификации:
- Выберите вкладку Headers и нажмите кнопку + Add Header.
- В поле ввода введите имя заголовка как Authorization, за которым следует двоеточ ие (:), и его значение (например, Authorization: Bearer YOUR_TOKEN).
Передача динамического токена аутентификации
Вероятно, вы захотите передать токен аутентификации, возвращенный в ответе на вызов API входа в систему. Такой токен меняется каждый раз при входе. Поэтому вам нужен способ передать динамический токен.
После успешного выполнения вызова входа убедитесь, что вы сохранили токен аутентификации в переменной состояния приложения (с Persisted -> True). Посмотрите визуалы ниже:

Теперь вы можете передать динамический токен:
- Выберите вкладку Headers и нажмите кнопку + Add Header.
- В поле ввода введите имя заголовка как Authorization, за которым следует двоеточие (:), а затем введите любое имя переменной в квадратных скобках (например, Authorization: Bearer [auth_token]).
- Выберите вкладку Variables и создайте новую переменную с тем же именем, которое вы указали в скобках. Это будет использоваться для передачи значения токена из переменной состояния приложения в вызов API.
Теперь из вызова API (который требует токена аутентификации) передайте значение токена из переменной состояния приложения.
Получение заголовков ответа
Иногда вам может потребоваться получить значения заголовков ответа. Например, извлечь токен аутентификации из заголовков ответа вызова API входа в систему.
Чтобы получить заголовок ответа:
- Убедитесь, что вы добавили действие вызова API и указали Action Output Variable Name.
- Теперь, когда/где Value Source установлен в From Variable, выберите Action Outputs > [Action Output Variable Name] (например, Action Outputs > loginResponse).
- Установите API Response Options в Get Response Header.
- Введите Header Name. Обратите внимание, что это должно совпадать с именем заголовка ответа из вашего вызова API.
- Нажмите Confirm.
Параметры запроса
Это необязательные параметры, которые вы можете передать с вызовом API; они помогают форматировать данные ответа, возвращаемые сервером. Обычно они добавляются в конец URL с вопросительным знаком (?) в качестве разделителя и представлены как пары ключ-значение.
Пример URL с параметрами запроса выглядит так (NASA Open API):
https://api.nasa.gov/neo/rest/v1/feed?start_date=2015-09-07&end_date=2015-09-08&api_key=DEMO_KEY
Здесь start_date, end_date и api_key — это параметры запроса, переданные для получения конкретных данных.
Вот еще один пример: этот вызов API <https://www.breakingbadapi.com/api/characters?limit=20&offset=0> имеет два параметра запроса. Параметр limit указывает на загрузку 20 элементов на страницу, а offset — на количество элементов для пропуска. Это называется пагинацией на основе смещения.
Передача параметров запроса
Чтобы передать параметры запроса для GET или DELETE вызова API:
- Выберите вкладку Query Parameters и нажмите кнопку + Add Query Parameter.
- Введите Name параметра запроса.
- Установите Value Source в Specific Value или From Variable.
- Если вы хотите передать это значение с вашей страницы, переменной состояния приложения или любого другого источника (т. е. динамическое значение), выберите From Variable, а затем из выпадающего списка Select Variable выберите уже созданную переменную (см., как создать переменную), или нажмите + Create New Variable. Примечание: Это немедленно создаст новую переменную с тем же именем, что и параметр запроса. Однако вам все равно нужно открыть вкладку Variables и установить ее Type.
- Если вы хотите передать статическое/фиксированное значение, выберите Specific Value, установите Type и введите Value.
Ниже приведен пример передачи параметра запроса для URL -> https://api.instantwebtools.net/v2/passenger?page=10&size=20
В редких случаях вы можете захотеть передать параметры запроса для других методов вызовов API, таких как POST, PUT и PATCH. Для этого:
- В URL вашего API замените жестко заданные значения на значимое имя в скобках (например, с
https://api.instantwebtools.net/v2/passenger?``**page=0**наhttps://api.instantwebtools.net/v2/passenger?``**page=[page]**). - Выберите вкладку Variables и создайте новую переменную с тем же именем, которое вы указали в скобках.
Переменные
Переменные позволяют передавать динамические значения из любой части вашего приложения в вызовы API. Вот когда они бывают полезны:
- Отправка токена аутентификации из состояния вашего приложения в заголовок запроса вызова API.
- Использование имени пользователя и пароля из виджетов TextField в теле запроса вызова API.
- Включение выбранных дат в качестве параметров запроса.
- Изменение базового URL на динамический URL.
Создание переменных
Чтобы создать переменные, выберите вкладку Variables, введите ее Name, выберите подходящий Type и укажите Default Value, если хотите.

Теперь вы можете передавать значения в эти переменные при запуске вызова API с вашей страницы. Вы можете установить значение из любого виджета, переменной состояния приложения или любого другого источника.
Вот как вы можете использовать переменную для создания динамического базового URL:

Тело
Вы можете отправлять данные (как тело запроса) при вызове API методов POST, PUT или PATCH, определяя их внутри Body. Самый распространенный тип — формат JSON, который является самым простым способом передачи данных в теле запроса.
Создание тела запроса
Здесь вы увидите создание тела запроса в следующих форматах:
Формат JSON
Чтобы создать тело запроса в формате JSON:
- Сначала, если вы еще не сделали этого, создайте переменные (например, переменные username и password, которые потребуются для передачи значений с страницы входа в вызов API входа).
- Выберите вкладку Body и установите выпадающий список Body в JSON.
- Скопируйте и вставьте тело запроса и замените значения на переменные, перетаскивая их в тело JSON.
Текстовый формат
Этот формат используется для отправки текстовых данных в теле запроса API. Например, в SOAP API тело запроса обычно в текстовом формате и содержит XML-данные.
Чтобы создать тело запроса в текстовом формате:
- Сначала, если вы еще не сделали этого, создайте переменные.
- Выберите вкладку Body и установите выпадающий список Body в Text.
- Скопируйте и вставьте тело запроса и замените значения на переменные, перетаскивая их в тело запроса.
Формат x-www-form-urlencoded
Чтобы создать тело запроса в формате x-www-form-urlencoded:
- Сначала, если вы еще не сделали этого, создайте переменные (например, переменные username и password, которые потребуются для передачи значений с страницы входа в вызов API входа).
- Выберите вкладку Body и установите выпадающий список Body в x-www-form-urlencoded.
- Нажмите + Add Parameter и введите Name параметра.
- Установите Value Source в Specific Value или From Variable.
- Если вы хотите передать это значение с вашей страницы, переменной состояния приложения или из любого другого источника (т. е. динамическое значение), выберите From Variable, а затем из выпадающего списка Select Variable выберите уже созданную переменную (см., как создать переменную), или нажмите + Create New Variable. Примечание: Это немедленно создаст новую переменную с тем же именем, что и параметр. Однако вам все равно нужно открыть вкладку Variables и установить ее Type.
- Если вы хотите передать статическое/фиксированное значение, выберите Specific Value, установите Type и введите Value.
Формат Multipart
Тело запроса multipart — это формат данных, используемый в HTTP-запросах, который позволяет передавать несколько частей данных в одном запросе. Он обычно используется для загрузки файлов.
Чтобы создать тело запроса в формате multipart:
- Выберите вкладку Body и установите выпадающий список Body в Multipart.
- Нажмите + Add Parameter и введите Name параметра.
- Установите Value Source в From Variable, а затем из выпадающего списка Select Variable нажмите + Create New Variable. Примечание: Это немедленно создаст новую переменную с тем же именем, что и параметр.
- Теперь перейдите на вкладку Variables и установите Type в Uploaded File. Это п озволит вам передавать файл, хранящийся локально на устройстве, с помощью действия, такого как Upload/Save Media.
Ответ API (JSON) в/из типа данных
Преобразование между ответом API (JSON) и типами данных часто называется десериализацией и сериализацией JSON. Это позволяет преобразовывать JSON-данные из ответа API в Custom Data Type, когда вы их получаете. Также это позволяет преобразовывать ваш Custom Data Type обратно в JSON при отправке данных в запросе API.
Это более надежный и удобный в обслуживании способ работы с JSON-данными в вашем приложении. Он снижает сложность и потенциальные ошибки (например, опечатки) по сравнению с ручным навигацией по путям JSON.
Создание пользовательского типа данных, соответствующего структуре JSON
Сначала создайте тип данных с той же структурой, что и ответ API. Вот как выглядит пример JSON-ответа после его отображения в Custom Data Type.
После этого вы можете выбрать преобразование в или из тип данных в зависимости от ваших требований.
JSON в тип данных
Давайте разберем, как получить JSON в Custom Data Type, используя пример, который извлекает список продуктов из этого API. Вот как это выглядит:

Вот как это сделать:
- Сначала убедитесь, что вы создали пользовательский тип данных, который соответствует структуре вашег о JSON.
- Откройте определение вызова API > Response & Test tab > Response Type > включите Parse as Data Type. Выберите Data Type, в который вы хотите преобразовать. В этом примере это 'AllProducts'.

-
На ListView после добавления запроса backend вызова API получите значения, установив следующие параметры.
- Generate Children from Variable, установив API Response Options в As Data Type.
- Установите Available Options в Data Structure Field, поскольку мы хотим захватить только конкретное поле, которое содержит список продуктов, а не другие элементы, такие как 'total' и 'skip'.
- Select Field в поле, которое содержит список продуктов, т. е. 'products' в этом примере.
- Нажмите Confirm дважды.
- Теперь вы можете привязывать данные в элементах UI так, как обычно, установив Available Options в Data Structure Field и Select Field, который вы хотите отобразить.
JSON из типа данных
Иногда вы можете захотеть динамически создать тело JSON и передать его вместе с запросом API вместо ручной настройки каждого поля в редакторе вызова API. Вы можете сделать это, добавив данные в Custom Data Type, а затем преобразовав его в JSON при выполнении вызова API.
Давайте разберем пример добавления продукта, отправив его данные в формате JSON в запросе API.

Вот как это сделать:
- Сначала создайте пользовательский тип данных, который соответствует формату JSON тела запроса API. Вот как это выглядит в этом примере.

- В вашем вызове API создайте переменную с типом JSON и поместите ее в раздел Body.
- При нажатии кнопки Add мы сохраним значения из UI в переменную состояния страницы пользовательского типа данных. Затем, при выполнении вызова API, передадим эту переменную состояния страницы и установим Available Options в To JSON.
Путь JSON
JSONPath — это язык запросов для JSON. Используя путь JSON, вы можете извлекать конкретные данные из всего JSON-ответа.
Обычно вы получаете ответ в формате JSON от запроса API.
Изучение нескольких путей JSON (или выражений JSONPath) поможет вам извлекать большинство необходимых данных. В нашем конструкторе вы можете пробовать и добавлять разные пути JSON в реальном времени и получать различные варианты, чтобы получить именно то, что вы ищете.
Некоторые примеры выражений JSONPath следующие:
$.data.name$.users[0].name$.users[:].name
Ведущий $ представляет корневой объект, точка (.) используется для доступа к ключам внутри JSON, значение в скобках ([0]) представляет индекс массива, если ключ содержит массив, а ([:]) выберет все объекты внутри списка.
Давайте разберем реальные примеры пути JSON для следующего ответа API:
{
"page": 1,
"per_page": 6,
"total": 3,
"total_pages": 2,
"data": [
{
"id": 1,
"email": "george.bluth@reqres.in",
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://reqres.in/img/faces/1-image.jpg"
},
{
"id": 2,
"email": "janet.weaver@reqres.in",
"first_name": "Janet",
"last_name": "Weaver",
"avatar": "https://reqres.in/img/faces/2-image.jpg"
},
{
"id": 3,
"email": "emma.wong@reqres.in",
"first_name": "Emma",
"last_name": "Wong",
"avatar": "https://reqres.in/img/faces/3-image.jpg"
}
],
"support": {
"url": "https://reqres.in/#support-heading",
"text": "To keep ReqRes free, contributions towards server costs are appreciated!"
}
}
$.total
Это вернет следующие данные:
3
$.data
Это вернет следующие данные:
[
{
"id": 1,
"email": "george.bluth@reqres.in",
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://reqres.in/img/faces/1-image.jpg"
},
{
"id": 2,
"email": "janet.weaver@reqres.in",
"first_name": "Janet",
"last_name": "Weaver",
"avatar": "https://reqres.in/img/faces/2-image.jpg"
},
{
"id": 3,
"email": "emma.wong@reqres.in",
"first_name": "Emma",
"last_name": "Wong",
"avatar": "https://reqres.in/img/faces/3-image.jpg"
}
]
$.data[0]
Это вернет объект по индексу 0 (т. е. первый объект).
{
"id": 1,
"email": "george.bluth@reqres.in",
"first_name": "George",
"last_name": "Bluth",
"avatar": "https://reqres.in/img/faces/1-image.jpg"
}
$.data[0].email
Это вернет значение email объекта по индексу 0.
"george.bluth@reqres.in"
$.data[:].email
Это вернет email всех объектов внутри data.
[
"george.bluth@reqres.in",
"janet.weaver@reqres.in",
"emma.wong@reqres.in"
]
Ключи JSON должны начинаться с буквы, подчеркивания или знака доллара. Они не могут начинаться с числового символа. Однако в случаях, когда у вас есть ключи с числовыми префиксами, такие как $.0_image, вы можете получить к ним доступ с помощью нотации скобок, как это: $.["0_image"].
Узнайте больше о JSONPath и как определить правильное выражение.