REST API - это просто


На сегодняшний день, во время интенсивного обмена данными между различными сервисами и предоставления услуг клиентам и/или друг другу, невозможно обойтись без создания REST API на серверной стороне сервиса, предоставляющего такие услуги. Также, создание REST API необходимо для мобильных клиентов, для обмена данными между клиентом и сервисом в браузерных SPA-приложениях (Single Page Application или "приложение одной страницы"), в различных смежных сервисах и, практически, повсеместно, где нужна лёгкая интеграция различных сервисов и предоставление возможности использования API на своём клиенте.

При необходимости предоставления услуг REST API пользователям или при интеграции с другими сервисами, возникают важные вопросы, на которые мы вместе постараемся ответить в этой публикации:

  1. Как правильно создать REST API для своего сервиса или сайта?
  2. Какая логика функционирования REST API?
  3. Как максимально обезопасить обмен данными между клиентом и сервером?
Попробуем разобраться вместе.


Итак, сначала необходимо понять логику функционирования REST API в целом:
  1. Авторизуемся на клиенте и получаем TOKEN (или, иными словами, ID-сессии).
  2. Подписываем этим токеном запрос к API (хэшируем: передаём дополнительный параметр HASH) и отправляем запрос (с параметрами API, TOKEN'ом, HASH'ем, временной меткой: TIMESTAMP и случайным параметром: RANDOM) на сервер. Рекомендуется отправлять все параметры в одном поле и без выноса TOKEN'а отдельным параметром в заголовок запроса header, как делают многие: это даёт полную свободу выбора протокола обмена данными.
  3. В ответ на запрос, сервер может просто вернуть результат работы API, а может вместе с результатом вернуть новый токен: chain-token ("цепной"/связующий токен).
  4. Если приходит новый токен, то необходимо подписывать новый запрос к API уже этим новым токеном. (иначе - подписываем старым токеном)
  5. Если сервер возвращает ошибку, что токен неверен - необходимо перезапросить (перевыписать) токен, пройдя в "прозрачном" режиме процедуру получения нового токена, используя учётные данные, сохранённые на клиенте без привлечения пользователя к этому процессу (т.е. два пакета обмена информацией: "запрос-ответ", вместо одного).
Теперь, когда основной порядок действий стал понятен, необходимо разобраться в тонкостях формирования параметров TOKEN, HASH и в детальном процессе обмена данными между клиентом и сервером, предоставляющим REST API:
  1. Изначально, нам нужно получить от сервера TOKEN. Для этого необходимо предварительно авторизоваться. Здесь можно использовать модификацию протокола CRAM-MD5.
  2. После получения токена мы можем использовать его для подписи отправляемых нами сообщений: запросов к API и необходимых данных для проверки целостности запроса: HASH, RANDOM, TIMESTAMP.
    Кратко опишем эти параметры:
    • HASH - подпись с применением функций хеширования и формул конкатенации данных запроса.
    • RANDOM - случайная строка символов или число для создания уникального запроса
    • TIMESTAMP - контроль давности запроса на стороне сервера.


Подписка на новости:

Самые полезные и признанные экспертами публикации в сферах IT-бизнеса и Web-разработки:

Сертификат

Certificate for nickname xmoonlight, is registered to: https://sitecoder.blogspot.com