Алекс Смит: Тестирование ПО с Нуля до Специалиста
January 31

7.5 REST- архитектура. Написание сообщений в формате JSON

REST

REST - Cтиль взаимодействия или построения системы с помощью которого происходит отправка запросов и получения ответов

REST (Representational State Transfer) — на самом деле архитектурный стиль, а не протокол. В отличие от SOAP, REST не подкреплен официальным стандартом. Фактически, он основывается на соглашениях.

Веб-сервис, построенный с учетом всех требований и ограничений архитектурного стиля, можно назвать RESTful веб-сервисом.

REST не использует конвертацию данных при передаче, данные передаются в исходном виде — это снижает нагрузку на клиента веб-сервиса, но увеличивает нагрузку на сеть. Управление данными происходит с помощью методов HTTP:

· GET — получить данные;

· POST — добавить данные;

· PUT — изменить данные;

· DELETE — удалить данные.

Как работает REST?

REST определен не так строго, как SOAP. RESTful-архитектура должна соответствовать шести архитектурным ограничениям:

  • единый интерфейс, позволяющий единообразное взаимодействие с сервером вне зависимости от типа устройства или приложения;
  • отсутствие состояния: необходимое состояние обработки запроса содержится в самом запросе без того, чтобы сервер хранил какие-либо относящиеся к сессии данные;
  • кэширование;
  • клиент-серверная архитектура: позволяет независимое развитие двух сторон;
  • многоуровневая система приложения;
  • возможность для сервера обеспечивать исполняемый код на клиенте.

Плюсы и минусы REST

Плюсы REST

Разделение клиента и сервера. По возможности разделяя клиент и сервер, REST обеспечивает лучшую абстракцию по сравнению с RPC. Система с уровнями абстракции способна инкапсулировать свои детали, чтобы лучше идентифицировать и поддерживать свои свойства. Поэтому REST API достаточно гибок, чтобы развиваться с течением времени и при этом оставаться стабильной системой.

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

Дружественность к кэшу. REST — единственный стиль, который позволяет кэшировать данные на уровне HTTP благодаря повторному использованию множества HTTP-инструментов. В то же время, реализация кэширования в любом другом API потребует настройки дополнительного модуля кэширования.

Поддержка нескольких форматов. Возможность поддержки нескольких форматов хранения и обмена данными — одна из причин, по которым REST в настоящее время преобладает в сфере создания общедоступных API.

Минусы REST

Нет единой структуры REST. Нет точного правильного способа создания REST API. Как моделировать ресурсы и какие ресурсы моделировать, будет зависеть от каждого сценария. Это делает REST простым в теории, но трудным на практике.

Большие полезные нагрузки. REST возвращает много богатых метаданных, так что клиент может понять все необходимое о состоянии приложения только из его ответов. И эта болтливость не имеет большого значения для большой сетевой трубы с большой пропускной способностью. Но это не всегда так.

Проблемы чрезмерных или недостаточных данных. Ответы REST зачастую содержат либо слишком много данных, либо их недостаточное количество, и создают необходимость в дополнительном запросе.

Разница между архитектурным стилем и протоколом в том что к АС не применяются какие-то жесткие правила, нет необходимости WSDL

Используют чаще, позволяет передавать данные в более удобном формате, который занимает меньше места и повышает производительность нашей системы

Отличие REST от RESTful – с помощью REST описывается структура передачи информации у веб-сервисов, описывает структура нашего веб-сервиса, а RESTful — это характеристика наших веб-сервисов, сам веб-сервис, который отвечает характеристикам REST.

Используется JSON

JSON

JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом формат независим от JS и может использоваться в любом языке программирования.

JSON - простой, основанный на использовании текста, способ хранить и передавать структурированные данные. С помощью простого синтаксиса вы можете легко хранить все, что угодно, начиная от одного числа до строк, массивов и объектов, в простом тексте. Также можно связывать между собой массивы и объекты, создавая сложные структуры данных.

После создания строки JSON, ее легко отправить другому приложению или в другое место сети, так как она представляет собой простой текст.

JSON имеет следующие преимущества:

  • Он компактен.
  • Его предложения легко читаются и составляются как человеком, так и компьютером.
  • Его легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее)
  • Многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.

Наиболее частое распространенное использование JSON - пересылка данных от сервера к браузеру.

Есть несколько основных правил для создания строки JSON:

  • Строка JSON содержит либо массив значений, либо объект (ассоциативный массив пар имя/значение).
  • Массив заключается в квадратные скобки [ ] и содержит разделенный запятой список значений.
  • Объект заключается в фигурные скобки { } и содержит разделенный запятой список пар имя/значение.
  • Пара имя/значение состоит из имени поля, заключенного в двойные кавычки, за которым следует двоеточие : и значение поля.

Значение в массиве или объекте может быть:

  1. Числом (целым или с плавающей точкой)
  2. Строкой (в двойных кавычках)
  3. Логическим значением (true или false)
  4. Другим массивом (заключенным в квадратные скобки)
  5. Другой объект (заключенный в фигурные скобки)
  6. Значение null, то есть пусто или же нет значения

Структуры данных, используемые JSON, поддерживаются любым современным языком программирования, что и позволяет применять JSON для обмена данными между различными языками программирования и программными системами.

Что же использовать?

Обычно, SOAP используется в крупных корпоративных системах со сложной логикой, когда требуются четкие стандарты, подкрепленные временем.

Если же вы разрабатываете публичное API и логика взаимодействия во многом покрывается действиями: чтение, добавление, изменение и удаление данных (те самые наши 4 метода get, post, put, delete ) — смело выбирайте REST. Он наиболее популярен и быстр.