REST
Описание | REST (от англ. Representational State Transfer — «передача репрезентативного состояния» или «передача „самоописываемого“ состояния») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Другими словами, REST — это набор правил того, как программисту организовать написание кода серверного приложения, чтобы все системы легко обменивались данными и приложение можно было масштабировать. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. |
---|---|
Область знаний | Информатика, Интернет вещей |
Авторы | Филдинг |
Поясняющее видео | https://www.youtube.com/watch?v=J4Fy6lmLBr0 |
Близкие понятия | API, HTTP, URL, JSON, WWW |
Среды и средства для освоения понятия | MediaWiki API |
Идентификация ресурсов
Все ресурсы идентифицируются в запросах, например, с использованием URI в интернет-системах. Ресурсы концептуально отделены от представлений, которые возвращаются клиентам. Например, сервер может отсылать данные из базы данных в виде HTML, XML или JSON, ни один из которых не является типом хранения внутри сервера.
История возникновения REST
Термин REST ввел Рой Филдинг, один из создателей протокола HTTP, в своей докторской диссертации "Архитектурные стили и дизайн сетевых программных архитектур" ("Architectural Styles and the Design of Network-based Software Architectures") в 2000 году. Можно сказать, что термин REST еще молодой, хотя его концепция лежит в самой основе всемирной паутины.
Преимущества REST
Филдинг указывал, что приложения, не соответствующие приведённым условиям, не могут называться REST-приложениями. Если же все условия соблюдены, то, по его мнению, приложение получит следующие преимущества:
- Надёжность (за счёт отсутствия необходимости сохранять информацию о состоянии клиента, которая может быть утеряна)
- Производительность (за счёт использования кэша)
- Масштабируемость
- Прозрачность системы взаимодействия (особенно необходимая для приложений обслуживания сети)
- Простота интерфейсов
- Портативность компонентов
- Лёгкость внесения изменений
- Способность эволюционировать, приспосабливаясь к новым требованиям (на примере Всемирной паутины)
Методы
Как правило, для взаимодействия между клиентом и сервером достаточно четырех методов:
GET — получение информации об объекте (ресурсе);
POST — создание, а иногда и изменение объекта (ресурса);
PUT — изменение объекта (ресурса). Обычно используется для регулярного обновления данных;
DELETE — удаление информации об объекте (ресурсе).
Реже используются методы LIST, UPDATE, PATCH и др.
Коды ответов
Ответы от сервера содержат коды состояния для оповещения клиента об успехе операции. Как разработчику вам не нужно знать каждый код состояния (их много), но вы должны знать самые распространённые и то, как они используются.
Для каждого метода НТТР ожидаются коды статуса, которые сервер должен вернуть в случае успеха:
GET — return 200 (OK)
POST — return 201 (CREATED)
PUT — return 200 (OK)
DELETE — return 204 (NO CONTENT)
Если операция не работает, вернётся наиболее конкретный код состояния, соответствующий возникшей проблеме.