Обзор
API (Application Programming Interface) — язык для взаимодействия приложений между собой. Описание правил такого языка называется спецификацией, а данные, которыми обмениваются приложения — сообщениями. Сообщения обычно идут парами запрос-ответ(request-response).
REST API
REST API (Representational State Transfer — передача репрезентативного состояния) также использует запросы и ответы, что мало чем отличается от посещения веб-страницы. Необходимо соответствующим образом выполнить запрос к ресурсу на сервере, и сервер ответит запрошенной информацией. Для доступа клиентских приложений к данным в REST API используются такие методы как POST, GET, PUT, PATCH и DELETE. Обмен данными осуществляется обычно по протоколу HTTP(S).
Из-за того, что приходится каждый раз заново передавать все данные для обработки запроса, объем сообщений увеличивается. Чтобы сохранить высокую скорость обмена, данные передаются в максимально сжатом формате. Чаще всего REST API использует формат JSON.
В "Симплайт 5" REST API может использоваться для интеграции с корпоративным уровнем (MES, ERP), внешними IoT-платформами, а также для разработки пользовательских приложений. С помощью HTTP-запросов можно считывать значения тегов проекта на сервере, исторические данные (моменты) и статусы оборудования, а также отправлять управляющие команды.

Методы
Как правило, для взаимодействия между клиентом и сервером достаточно пяти методов:
GET— получение информации об объекте (ресурсе).POST— создание нового объекта (ресурса).PUT— полная замена объекта (ресурса) на обновленную версию.PATCH— частичное изменение объекта (ресурса).DELETE— удаление информации об объекте (ресурсе).
Пример запроса
Ниже показан пример HTTP-запроса информации о статусе сервера "Симплайт 5" для REST-клиента. Предполагается, что проект развернут на машине с установленной средой разработки и используется порт по умолчанию (8080).
Аналогичный запрос можно выполнить в строке интернет-браузера:
Примечание
Использовать интернет-браузер можно только для простых запросов — в данном случае, чтобы быстро протестировать работу с API. Для выполнения сложных запросов, требующих авторизации, рекомендуется использовать внешний REST-клиент.
Ответ на запрос будет следующим:
Структура ответа
После выполнения запроса сервер возвращает клиентскому приложению ответ. Он включает код ответа, заголовки и тело ответа.
Заголовки в ответе определяют формат передаваемых данных, спецификацию и версию протокола обмена, и другие сведения. Тело ответа — это информация, которую запрашивал клиент. Ответ тоже чаще всего передается в формате JSON. Но тело ответа может быть и пустым.
Код ответа — это признак успешности выполнения запроса. Для унификации используются стандартные коды ответа. Они представляют собой трехзначные числа.
- Коды 1хх — информационные.
-
Коды 2хх говорят об успешном выполнении запроса:
- 200 OK – если клиентом были запрошены какие-либо данные, то они находятся в заголовке или теле сообщения.
- 201 OK – создан новый ресурс.
-
Коды 3xx обозначают перенаправление или необходимость уточнения:
- 300 — на отправленный запрос есть несколько вариантов ответа. Чтобы получить нужный вариант, клиент должен уточнить запрос.
- 301 — запрашиваемый адрес перемещен.
- 307 — запрашиваемый адрес временно перемещен.
-
Коды 4хх говорят о том, что при выполнении запроса возникла ошибка, и это ошибка на стороне клиента.
- 400 – Bad Request. Запрос некорректный.
- 401 – Unauthorized. Запрос требует аутентификации пользователя.
- 403 – Forbidden. Доступ к сервису запрещен.
- 404 – Not found. Ресурс не найден.
-
Коды 5хх говорят об ошибке на стороне сервера.
- 503 — сервис недоступен.
- 504 — таймаут (превышено допустимое время обработки запроса).
В ответе на запрос из предыдущего раздела при использовании REST-клиента помимо запрашиваемой информации будет содержаться служебная информация и код.
| GET /api/server/info | |
|---|---|
Расшифровка служебной информации ответа:
- Используется протокол HTTP/1.1. Запрос обработан успешно. В теле ответа содержится запрашиваемая информация.
- Разрешает кросс-доменные запросы с любого источника.
- Тело ответа представляет из себя JSON-документ.
- Момент генерации ответа сервером.
- Тело ответа (JSON-строка) занимает 35 байт.
- Сервер сообщает, что после отправки этого ответа TCP-соединение будет закрыто.
- Пустая строка.
- Ответ на запрос.
Расшифровка тела ответа:
"authRequired": false— требуется ли аутентификация на сервере. В данном случае ответ отрицательный."status": "ok"— статус работы сервера.