День 1862. #ЗаметкиНаПолях
REST vs RESTful. В чём Разница? Начало
REST API — один из самых популярных API в сообществе веб-разработчиков. В чем разница между REST API и RESTful API?
Короткий ответ: REST - REpresentational State Transfer (Передача Репрезентативного Состояния). Это архитектурный шаблон для создания веб-сервисов. RESTful-сервис реализует этот шаблон.
Длинный ответ начинается со слов «вроде как» и «это зависит» и продолжается более полными определениями.
REST
Для некоторых REST – это обмен JSON-данными между клиентом и сервером. Это не только не полное определение, но и не всегда верное. Спецификация REST не требует HTTP или JSON, JSON или XML там даже не упоминаются.
Рой Филдинг представил архитектурный шаблон REST в своей диссертации в 2000 году. Там описывается метод облегчения обмена данными приложений между клиентами и серверами. Ключевой особенностью является то, что от клиента не требуется никаких предварительных знаний о приложении. Филдинг не предъявляет особых требований. Вместо этого он определяет REST в отношении ограничений и архитектурных элементов.
Архитектурные ограничения REST
1. Клиент-сервер
REST-сервисы имеют сервер, который управляет данными и состоянием приложения. Сервер взаимодействует с клиентом, который обрабатывает взаимодействие с пользователем. Чёткое разделение задач сервера и клиента означает, что вы можете обновлять и улучшать их независимо.
2. Нет сохранения состояния
Сервер не поддерживает состояние клиента. Клиенты управляют состоянием своего приложения. Их запросы к серверу содержат всю информацию, необходимую для их обработки.
3. Кэш
Сервер должен помечать свои ответы как кэшируемые или нет. Так инфраструктура и клиент могут кэшировать ответы, когда это возможно, для повышения производительности. Некэшируемая информация может удаляться, так что ни один клиент не будет использовать устаревшие данные.
4. Единый интерфейс
Филдинг говорит: «Главной особенностью, которая отличает архитектурный стиль REST от других сетевых стилей, является акцент на единообразном интерфейсе между компонентами». REST-сервисы предоставляют данные в виде ресурсов с согласованным пространством имён.
5. Многоуровневая система
Компоненты системы не могут «видеть» ничего за пределами своего уровня. Так вы можете легко добавить балансировщики нагрузки и прокси-серверы для повышения безопасности или производительности.
RESTful-сервис — это больше, чем веб-сервер, который обменивается JSON или любыми другими форматами данных. Вместе приведённые выше ограничения создают очень специфический тип приложения.
Применение ограничений
Клиент-серверность, многоуровневость системы и ограничение на несохранение состояния образуют приложение с чёткими границами и чётким разделением задач. По запросу данные передаются с сервера клиенту, где они отображаются или обрабатываются. Если необходимы какие-либо изменения в состоянии, клиент отправляет изменённые данные обратно на сервер для хранения. В REST и клиент, и сервер обладают общими знаниями о данных и их состоянии. Архитектура не скрывает данные, она лишь скрывает реализацию. Данные приложения доступны клиентам в понятном и согласованном интерфейсе и, по возможности, кэшируются.
Окончание следует…
Источник: https://blog.ndepend.com/rest-vs-restful/
Post #2251
2.78K
- 👍 21