MyTetra Share
Делитесь знаниями!
6 основных принципов REST API
Время создания: 20.05.2018 20:13
Автор: br0ke
Текстовые метки: api, rest, restful, http, client-server, stateless, cacheable
Раздел: Информационные технологии
Запись: and-semakin/mytetra_data/master/base/15268291844d4dnpmz4l/text.html на raw.githubusercontent.com

REST -- это акроним от REpresentational State Transfer. Это архитектурный стиль для распределенных систем, впервые введенный Роем Филдингом в 2000 году в его знаменитой диссертации.


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


Руководящие принипы написания RESTful-интерфейсов.


  1. Client-Server. Отделяя пользовательский интерфейс от хранилища данных, мы улучшаем переносимость пользовательского интерфейса на другие платформы и улучшаем масштабируемость серверных компонент засчёт их упрощения.
  2. Stateless (без состояния). Каждый запрос от клиента к серверу должен содержать в себе всю необходимую информацию и не может полагаться на какое-либо состояние, хранящееся на стороне сервера. Таким образом, информация о текущей сессии должна целиком храниться у клиента.
  3. Cacheable (кэшируемость). Это ограничение требует, чтобы для данных в ответе на запрос явно было указано -- можно их кэшировать или нет. Если ответ поддерживает кэширование, то клиент имеет право повторно использовать данные в последующих эквивалентных запросов без обращения на сервер.
  4. Uniform interface (единообразие интерфейса). Если применить к систем инженерный принцип общности/единообразия, то архитектура всего приложения станет проще, а взаимодействие станет прозрачнее и понятнее. Для выполнения этого принципа необходимо придерживаться нескольких архитектурных ограничений. REST накладывает на интерфейс четыре ограничения: 1) идентичность ресурсов; 2) манипуляция над ресурсами через представление; 3) исчерпывающие, понятные человеку сообщения; 4) гипермедиа (hypermedia) как движок для состояния приложения (HATEOAS) -- ссылки на другие ресурсы внутри приложения.
  5. Layered system (многоуровневая система). Многоуровневость достигается засчёт ограничения поведения компонентов таким образом, что компоненты "не видят" другие компоненты, кроме расположенных на ближайших уровнях, с которыми они взаимодействуют.
  6. Code on demand (код по мере необходимости, необятельно). REST позволяет наращивать функциональность клиентского приложения по мере необходимости при помощи скачивания и исполнения кода в виде апплетов или скриптов. Это упрощает клиентские приложения, уменьшая количество заранее написанных возможностей.


POST -- create

GET -- read

PUT -- update/replace

DELETE -- delete

PATCH -- partial update/modify

 
MyTetra Share v.0.65
Яндекс индекс цитирования