7.5 REST- архитектура. Написание сообщений в формате JSON
REST
REST - Cтиль взаимодействия или построения системы с помощью которого происходит отправка запросов и получения ответов
REST (Representational State Transfer) — на самом деле архитектурный стиль, а не протокол. В отличие от SOAP, REST не подкреплен официальным стандартом. Фактически, он основывается на соглашениях.
Веб-сервис, построенный с учетом всех требований и ограничений архитектурного стиля, можно назвать RESTful веб-сервисом.
REST не использует конвертацию данных при передаче, данные передаются в исходном виде — это снижает нагрузку на клиента веб-сервиса, но увеличивает нагрузку на сеть. Управление данными происходит с помощью методов HTTP:
Как работает 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 (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом формат независим от JS и может использоваться в любом языке программирования.
JSON - простой, основанный на использовании текста, способ хранить и передавать структурированные данные. С помощью простого синтаксиса вы можете легко хранить все, что угодно, начиная от одного числа до строк, массивов и объектов, в простом тексте. Также можно связывать между собой массивы и объекты, создавая сложные структуры данных.
После создания строки JSON, ее легко отправить другому приложению или в другое место сети, так как она представляет собой простой текст.
JSON имеет следующие преимущества:
- Он компактен.
- Его предложения легко читаются и составляются как человеком, так и компьютером.
- Его легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее)
- Многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.
Наиболее частое распространенное использование JSON - пересылка данных от сервера к браузеру.
Есть несколько основных правил для создания строки JSON:
- Строка JSON содержит либо массив значений, либо объект (ассоциативный массив пар имя/значение).
- Массив заключается в квадратные скобки [ ] и содержит разделенный запятой список значений.
- Объект заключается в фигурные скобки { } и содержит разделенный запятой список пар имя/значение.
- Пара имя/значение состоит из имени поля, заключенного в двойные кавычки, за которым следует двоеточие : и значение поля.
Значение в массиве или объекте может быть:
- Числом (целым или с плавающей точкой)
- Строкой (в двойных кавычках)
- Логическим значением (true или false)
- Другим массивом (заключенным в квадратные скобки)
- Другой объект (заключенный в фигурные скобки)
- Значение null, то есть пусто или же нет значения
Структуры данных, используемые JSON, поддерживаются любым современным языком программирования, что и позволяет применять JSON для обмена данными между различными языками программирования и программными системами.
Что же использовать?
Обычно, SOAP используется в крупных корпоративных системах со сложной логикой, когда требуются четкие стандарты, подкрепленные временем.
Если же вы разрабатываете публичное API и логика взаимодействия во многом покрывается действиями: чтение, добавление, изменение и удаление данных (те самые наши 4 метода get, post, put, delete ) — смело выбирайте REST. Он наиболее популярен и быстр.