Работа с API-запросами
API (Application Programming Interface) — это набор правил и инструментов для взаимодействия программ друг с другом. В PILOT API используется для обмена данными между системами, сервисами, приложениями и платформой.
API-запрос состоит из:
-
URL — адрес API-сервера и команда
-
Параметры запроса — данные, которые передаются на сервер
-
Метод запроса — способ взаимодействия с сервером
Как работает API в PILOT
PILOT использует распределённую инфраструктуру, которая включает несколько серверов, например, BLADE, KSA, AFRICA, USA. У каждого сервера может быть несколько узлов — нод, со своим номером.
Когда вы отправляете API-запроса к системе, вы можете указать конкретный сервер (например, BLADE), а также конкретный узел внутри этого сервера — node. Так, запрос будет обработан напрямую на выбранном сервере и конкретном узле без лишних пересылок и с минимальным временем отклика.
Пример запроса
https://blade.pilot-gps.com/api/api.php?cmd=list&node=14
|
blade.pilot-gps.com — это имя сервера
node=14 — указание на узел (сервер), где должен быть обработан запрос.
Методы запросов в API
GET
Метод для получения данных. Используется, например, для запроса списка объектов или информации об аккаунте.
В GET-запросе команда и параметры передаются прямо в URL. Параметры добавляются после знака ? и разделяются символом &.
Пример
https://<address>/api/api.php?cmd=bindControl&uid=123&imei=456&lineuid=789
|
cmd=bindControl — команда
uid=123, imei=456, lineuid=789 — параметры
POST
Метод для отправки данных. Например, используется для создания нового объекта или формирования отчёта.
В POST-запросе команда и параметры могут передаваться в теле запроса или команда указывается в URL, а параметры передаются в теле.
Пример 1
URL: https://<address>/api/api.php?cmd=bindControl
Тело запроса
{
"uid": "123",
"imei": "456",
"lineuid": "789"
}
|
Пример 2
URL: https://<address>/api/api.php
Тело запроса
{
"cmd": "bindControl",
"uid": "123",
"imei": "456",
"lineuid": "789"
}
|
PUT
Метод для обновления данных. Этот вид запроса используется, например, для изменения параметров объекта или аккаунта.
Чаще всего PUT используется для обновления конкретного ресурса, поэтому идентификатор обычно указывается в URL, а обновляемые данные — в теле.
Пример
URL: https://<address>/api/api.php/123
Тело запроса:
{
"cmd": "updateControl",
"uid": "123",
"imei": "456",
"lineuid": "789",
"status": "active"
}
|
DELETE
Метод для удаления данных. Например, если нужно удалить объект или аккаунт, используется этот метод.
В DELETE-запросе команда и параметры обычно передаются в URL.
Пример
https://<address>/api/api.php?cmd=bindControl&uid=123&imei=456&lineuid=789
|
Формат данных
API поддерживает различные форматы как для запросов, так и для ответов.
JSON:
{
"cmd": "bindControl",
"uid": "123",
"imei": "456",
"lineuid": "789"
}
|
Form-encoded:
cmd=bindControl&uid=123&imei=456&lineuid=789
|
XML:
<request>
<cmd>bindControl</cmd>
<uid>123</uid>
<imei>456</imei>
<lineuid>789</lineuid>
</request>
|
Типы данных
В API используются различные типы данных для передачи информации между клиентом и сервером. Рассмотрим основные типы данных, которые могут встречаться в запросах и ответах API.
Тип данных
|
Описание
|
Пример в json-формате
|
Для чего используются
|
Строка (String)
|
Текст в кавычках
|
"name": "Маршрут №9"
|
Для текстовых данных: названия, описания
идентификаторы
|
Число (Number)
|
Числовое значение, целое или дробное
|
"price": 15.35
|
Для числовых данных: цены
идентификаторы, координаты, время
|
Массив (Array)
|
Упорядоченный список элементов любого типа
|
"points": [{"lat": "53.352142", "lon": "83.758749"}, {"lat": "52.534012", "lon": "85.178777"}]
|
Для списков данных: остановки, товары,
пользователи
|
Объект (Object)
|
Набор пар "ключ — значение"
|
"uid": "1", "lat": "53.352142", "lon":"83.758749"}
|
Для структурированных данных:
информация об остановке, пользователе, заказе
|
Булевый тип
(Boolean)
|
Логическое значение true/false или 1/0
|
"bidirectional": 1
|
Для флагов или состояний:
активен/неактивен, доступен/ недоступен
|